第七天總結
1、
抽象類
a.
通過乙個
abstract
關鍵字來修飾的類
b.主函式,一般函式,建構函式,抽象函式的區分,抽象類是由抽象方法(函式)引出來的。抽象類是因為抽象方法的由來而由來。抽象類不能被例項化
abstract class absdemo
c.抽象類不能被
new物件,也就是抽象類不能建立物件,因為抽象類中的抽象函式是沒有函式主體,通常,建立乙個抽象類的子類,在子類中用函式將抽象類中的所有抽象函式覆蓋掉,從而能夠建立子類的物件。完成例項化
d.抽象方法的出現可以強制子類去做某些事情,因為如果子類要例項化,就必須要覆蓋掉父類中的抽象方法。
e.如果子類沒有把抽象類中的抽象函式全部覆蓋,那麼這個子類仍然還是乙個抽象類,必須進一步定義子類對抽象函式進行抽象化才能類的例項化
f.抽象類也是又類不斷向上抽取而產生的,但是有些行為在各個物件中的實現方法是不一樣的,所以最頂層的父類中就沒法給出乙個確定的方法,所以他的函式主體就是空的,從而衍化成了抽象函式,就形成了抽象類
g.抽象類一定是父類,但是他仍然可以做其他抽象類的子類
h.抽象類中可以不寫抽象方法,或者抽象類中的方法不一定全部是抽象方法i.
abstract
和final
不能同時修飾類名,
final
是最終化類,他不能被繼承,他沒有自己的子類,而
abstract
是必須有子類才能被例項化的。
j.抽象方法可以寫
public
但是不能用
private
,因為private
修飾的私有函式,不能被覆蓋,同樣,抽象方法也不能寫成靜態,因為
static
是隨著類的載入而載入,而抽象類只有在子類建立了物件後才能例項化,如果有了
static
的話那麼在子類沒有建立物件之前,他所修飾的函式已經被載入進了記憶體,而抽象函式被載入是沒有意義的
k.抽象類中是存在建構函式,子類在物件生成的時候,先要去父類對父類進行建構函式初始化。
l.抽象類和一般的類是沒有區別的,僅僅是多了抽象方法而已,有了抽象方法所有類也就被抽象了,變成了抽象類。
2
、介面
我們剛開始學界面的時候可以這麼想,介面在程式中體現就是一種特殊的抽象類,介面裡面的函式全部都是抽象函式。
沒有抽象的變數一說,介面裡的變數都被
final
修飾,被最終化了,就相當於是乙個常量,見後面他的寫法。
a.定義介面的關鍵字,
inte***ce。b.
介面也不能建立物件,他裡面是抽象的方法,他只能建立自己的子類去例項化。如果他的子類沒有覆蓋掉所有的抽象方法那麼這個子類還是個抽象類
c.只能存放兩種成員,乙個是函式,乙個是變數,他們都有固定修飾符
變數:public static final
資料型別
變數名=
值他就相當於乙個常量
函式:public abstract
返回值型別
函式名(引數列表);
在介面中,你可以省略資料型別和返回值型別前面的所有修飾符,但是可以省略不代表沒有,洗頭會預設給你隱藏起來,其實是有的
d.介面的子類不叫繼承介面,子類只能說是實現介面,用關鍵字
implements
表示介面的特點(主機板例項)
a.介面是對外暴露的一種規則
b介面是程式功能的擴充套件
c.介面可以降低程式的耦合性(事物的緊密聯絡程度)即互相依賴性
d.介面可以被多實現,相當於多繼承,乙個子類可以實現多個介面,因為介面中的函式都是沒有主體的,即使有完全相同的抽象函式,也可以被子類被覆蓋實現
介面的應用
當我們繼承乙個類的時候,仍然同時去實現介面,要先繼承後實現。
inte***ce a
inte***ce b
class demo }
class inter extends demo implements a,b
例項理解:學員繼承學員類中的學習的方法,然後部分學員又實現了抽菸的介面。抽菸不是通用功能,而是擴充套件功能,不是所有學員物件所共有的,所以我們可以定義乙個抽菸的介面。
類與類之間是繼承關係,類與介面之間是實現關係,因為介面中就沒有乙個能用的東西。但是介面與介面之間也是可以繼承的。並且支援多繼承,乙個介面可繼承多個介面
之所以類之間沒有多繼承,我們可以用乙個下面的例子推理,但是介面中的函式都是沒有主體的,沒法例項化的,最後你在實現的時候實現的是哪個函式,他就給你哪個函式,不存在安全隱患,所以多繼承在介面之間是可以的。
class a
} class b
} class c extends a,b
} 在這個例子中,
c同時繼承了a和
b,那麼c的
show
函式就需要覆蓋兩個父類中
show
函式,在覆蓋
a的時候是沒問題的,但是他沒法去覆蓋b中的
show
函式,因為返回值型別是不一樣的,但是當建立
c的物件並呼叫它的
show
方法的時候,
c就會去a和
b中去找到
show
函式,這個時候就沒法確定如否執行b中的
show
,這樣就出現了不穩定因素,那麼這就是個安全隱患。
3
、多型
函式也有多型性,比如說覆蓋、過載。
物件的多型性可以描述為某一類事物的多種存在形態。人有男人的存在形式也有女人的存在形式。
a.多型性的前提條件是多種存在形態之間一定要有關係。因為關係的存在才有的多型性
class animal
void show2()
}class dog
void show3()
}class demo
void show(animal a)//
父類的引用接收子類的物件,多型在程式中的另外一種體現}b.
上例總結:在多型性當中,成員函式在編譯時期看的是引用型變數所屬的類中是否有所呼叫的方法,(上例中的的
a就是乙個引用型變數,他引用的是
dog類的物件,執行時期,看的是物件所屬的類中是否有所呼叫的方法。上面的
show1
被子類覆蓋,
show2
被子類繼承。
也就是成員函式編譯看左邊,執行看右邊。、
c.如果在上例中是可以呼叫
show3
的,我們可以聯想到資料運算時候的自動型別提公升和強制型別轉換,
show3
是子類的特有屬性,我們可以用
dog d=(dog)f;
在輸入d.show3()
就可以轉換了,形同於強制型別轉換。在多型的過程中,自始至終只有乙個物件。
d.多型的出現增強的程式的擴充套件性。要有關係,要有覆蓋。介面的引用也可以指向引用物件
e.物件
instanceof
介面或者類,就是判斷物件是否所屬於右邊的介面或者類
f.當要指揮多個物件做事情的時候,呼叫多個物件的方法的時,而這些物件所屬的類又屬於同乙個父類,那麼我們可以用多型是實現對他們的進行統一指揮使用,方便,提高了程式的擴充套件性,但是唯一的缺點就是沒法體現出子類物件中的特殊函式。多型實現的函式只能是父類中已有的。
多型的應用舉例:
/*多型的一種應用形式,也是比較常見的一種,父類引用接收了子類的物件,下面的例子在以前我們是可以直接在主函式建立張三李四等物件的,直接呼叫它們的方法;但是如果想張三李四這樣的類多了的話,就會比較麻煩,還有一種情況,如果人這個類不只一種行為,不光有吃飯,還有睡覺等等等等,那麼我們在主函式中如果直接建立張三等物件的話,要實現它們中的每個方法我們就必須指揮它們裡面的所有方法,就更麻煩了,所以我們直接建立乙個
personeat
的類,拿吃說吧,
person
的所有子模擬如張三等都有吃的方法,那麼我們就可以在
personeat
中建立乙個開吃的類,用於指揮吃飯這個方法,因為
person p
這個父類引用時可以接收子類的物件的,所以可以往裡面傳張三李四等物件讀取到他們吃飯的方法,同理睡覺等等方法,都可以用這種方法得到簡便的指揮,這就是多型的一種應用。*/
abstract class person
class personeat }
class zhangsan extends person }
class lisi extends person }
class wangwu extends person }
class test4 }
第七天總結
第一就是serviece 層的東西會被兩個前端同時呼叫。所以要做特定的處理放在controller層 goods.setsellerid 這有個簡單的翻譯問題 可以做乙個陣列。讓數字對應下標,取值就是翻譯 顯示分類。這種是一種很優的方案 然後真正的翻譯讓前段js來做 就是用陣列的下標存id 然年值就...
erlang第七天總結
1.非同步accept prim inet async accept lsock,1 請求非同步accpet 有連線來之後會有訊息返回你剛剛呼叫上面函式的程序 inet db register socket sock,inet tcp 上面的訊息到了之後要初始化下這個socket 後面就可以正常使用...
國慶第七天總結
今天的心態非常懵圈 1.心態是個非常重要的問題 2.不要下太確定的結論,這麼做一定不對什麼的 3.在賽場上就算隊友心態影響了你,也一定要學會去調節 但自己有不擅長去調節心態很容易受到別人的影響 4.打的有點難受,今天一點都不快樂 關於今天的題目,感覺就是數學專場,還出了個大模擬來讓我們來消磨時間也是...