一,簡單說兩句,不喜歡省略
對學習物件導向的人的一點點建議,開始的時候老師說的很神奇,什麼物件導向,封裝,多型什麼什麼什麼什麼。。。我覺得這些完全是製造混亂狀態。
程式設計就是方法,然後就是方法直接的呼叫,方法會用到傳值,把相似方法羅列起來,組裝起來,就是物件了。就好比一群零件,可能電池也對你有幫助,可能螺絲釘也對你有幫助,這些散碎零件就是函式,然後組裝成機械人就成了玩具,這個玩具就是物件了,其實和函式差不多。不知道我這麼說對你有沒有幫助,總之,一切都是讓人們更加方便的。沒有那麼複雜。
名字在棧裡面,屬性在堆裡面,函式在記憶體裡面。
函式可以先呼叫,最後寫這個函式也沒有問題,因為函式是被提前載入到記憶體裡面,等著你指令碼執行的時候去呼叫他。
函式在沒有被執行的時候,已經被載入到記憶體了,**段和靜態資料段,類也是**段
換句話說方法的**段不依賴new,或者呼叫生存。屬性依賴物件生存;
物件導向說起來很神奇,其實就是將函式做了組合封裝。比如乙個函式就像乙個人可以單打獨鬥,而物件導向更像是乙個軍隊,可以形成很大的戰鬥力。
php中物件導向,我們在框架中常見的有繼承,所謂繼承就是有乙個詞extends,如果用了這個詞,兩個類之間就有了聯絡,下面的類可以使用上面類的方法。如果舉例子的話,可能是支援吧,比如我們就像小孩子,如果我們完成乙個任務完成不了,我們就可以求助老師,當然那個老師得認識我們,認識就是extends,這個時候我們就可以求助老師的能力。其中子類使用父類方法的時候如果不想被子類同名函式覆蓋需要使用parents::子類方法();可能開始的時候不是很習慣物件導向,如果熟悉了,感覺還是蠻不錯的。
沒有被new的時候想呼叫乙個類裡面的方法,就用乙個類繼承另乙個類,然後用這個類::父類,這樣就不用new這個類了,直接呼叫就可以了。
幾個方法,不經常用,寫下來了:
get_class(); //獲取物件的類
get_parent_class(); //獲取物件的父類
get_class_vars() //獲取物件的屬性 這裡用法是 var_dump(get_class_vars("類名"));
get_object_vars() //這裡用法是 var_dump(get_class_vars($wyl)); //$wyl = new it();
get_class_methods($wyl) //返回類的方法 -- 如果是子類會包含父類方法
property_exists("person","eat");
is_object("物件名");
instanceof; $物件 instanceof 物件 驗證乙個物件是否是從祖先例項化出來的
魔術方法:
什麼是魔術方法,我們都知道方法需要呼叫,呼叫就相當於我站在門外,向屋子裡面喊人,喊到誰了,誰就答應我一聲,然後跑出來,幫我做事情。魔術方法就是我不用喊人,但是怎麼會被觸發呢,就是在做錯事情的時候,比如我們做了乙個防盜機制,有人做錯事情了,就會觸發這個線,然後自動報警,不被我們控制到。
__tostring() 當我們new了乙個物件,輸出這個物件的時候,物件不能被直接輸出,當我們輸出的時候會報錯,但是我們寫了這個方法,那麼不會被報錯,執行__tostring()方法,當然這個方法不能寫echo,應該是return返回乙個引數
了解物件導向
js提供的建構函式 new date 2 自己定義的建構函式 new 加建構函式建立物件 new的函式手寫字母要大寫哦 面向過程是一件事 該怎麼做 物件導向是一件事 該讓誰來做 然後那個 誰 就是物件,他要怎麼做是他自己的事,反正最後一群物件合力能把事做好就行了。物件導向 狗.吃 肉 面向過程 吃....
java 了解物件導向
我們都知道物件導向的應用很廣泛,認識物件導向一定不能少了三大特點 物件導向的三大特性 類與物件的關係 類是對某一事物的描述,是抽象的 概念上的定義 物件是實際存在的該類事物的每乙個個體,所以也成為例項,類就相當於乙個模板。類的定義 class 類名稱 乙個類定義完成之後不能直接使用,需要產生物件 必...
重新了解物件導向
pytorch越看越邊緣,現在重頭看物件導向,因為之前一直是用微控制器,用c語言,對物件導向一知半解,今天有點空時間,深入學一學。主要 連線 python之路 初識物件導向 這位博主以人狗大戰為例,很形象的講述了物件導向的程式設計過程。class 類名 def init self,引數1 引數2 s...