多态,接口,
小細(xì)節(jié)知識(shí)點(diǎn)
1.一個(gè)Java文件可以很多其他類但只能有一個(gè)主類。
2.final修飾的時(shí)候要看清楚修飾的是什么,比如,有的時(shí)候修飾的是地址(也就是引用類型),這時(shí)候外面的引用指針確定了而已,但是他指向的東西的里面的值可以更改。
3.單繼承的缺點(diǎn),只能有一個(gè)父類。
????????接口可以解決這個(gè)缺點(diǎn)。
多態(tài)
繼承是前提(有繼承才會(huì)父類)
父類引用指向子類對象(子類對象去代替自己的父類)
多態(tài),允許不同類的對像對同一個(gè)類的消息做出響應(yīng),不同的有對象可以有自己的響應(yīng)方式
????????就是用子類的對象代替父類,然后可以使用父類的東西,所以沒有子類的屬性都是用父類的,因?yàn)榉椒ㄟM(jìn)行了重寫,所以會(huì)調(diào)用子類的方法
多態(tài)的使用場景
1.直接寫,通過賦值進(jìn)行接收
2.形參是父類引用,實(shí)參是子類對象
3.用父類類型的變量來接收是對象的返回值
4.隱式多態(tài),這個(gè)是指這個(gè)方法子類沒有,而父類有他調(diào)用父類的,這時(shí)候不只是繼承,其實(shí)已經(jīng)多態(tài)了
如果有this,this是類的第一個(gè)成員變量,所以this的類型是這個(gè)類的類型,這時(shí)候就發(fā)生了多態(tài)。
其他注意事項(xiàng):
1.向上轉(zhuǎn)型,多態(tài)
2.向下轉(zhuǎn)型,類型轉(zhuǎn)化,強(qiáng)制和隱式,同樣適合引用類型
cast,指向錯(cuò)誤,向下轉(zhuǎn)型,
instance of判斷這個(gè)父類是不是由這個(gè)對象實(shí)例化來的,向下轉(zhuǎn)型
每一個(gè)都是實(shí)體,不和變量一樣
抽象? abstract
被abstract修飾的類是抽象類,不能實(shí)例化對象,但是可以寫構(gòu)造方法,所以構(gòu)造方法沒有用了
抽象類里面的抽象方法是沒有方法體,不實(shí)現(xiàn),讓子類實(shí)現(xiàn)
抽象類,被abstract修飾的類叫做抽象類
abstract不能修飾變量
子類為了實(shí)現(xiàn)父類沒有實(shí)現(xiàn)的方法,要不就自己也抽象
被abstract修飾的類就是要繼承的
方法就是來復(fù)寫的
final(不能繼承,不能復(fù)寫),abstract沖突了,不能一起使用
還不能靜態(tài),因?yàn)殪o態(tài)的方法對象本來就不能引用
private也不能使用,因?yàn)樗接羞€怎么繼承
接口的概念
interface關(guān)鍵字定義接口
權(quán)限修飾符 interface 接口名
來實(shí)現(xiàn)Java單繼承的缺點(diǎn),多實(shí)現(xiàn),接口就是來實(shí)現(xiàn)的
impl? implemes實(shí)現(xiàn)接口,多實(shí)現(xiàn),逗號分隔,解決了Java單繼承的缺點(diǎn),可以多實(shí)現(xiàn),用逗號分隔
接口內(nèi)部
和類對比
在接口內(nèi)部
所有的常量都是共有的,而且都是靜態(tài)常量,所有都要全部大寫
方法都是共有的,static
成員方法,接口內(nèi)默認(rèn)抽象方法,還可以有靜態(tài)方法,沒有構(gòu)造方法不能有構(gòu)造方法
implemens接口實(shí)現(xiàn)也需要有重寫,因?yàn)闆]有實(shí)現(xiàn)
接口的實(shí)現(xiàn)類必須實(shí)現(xiàn)接口的抽象方法,如果沒有實(shí)現(xiàn)必須成為抽象類
父類實(shí)現(xiàn)對象,多態(tài)還可以有義父,干爹new靜態(tài)方法接口。
接口的默認(rèn)方法可以通過實(shí)現(xiàn)類調(diào)用,
接口可以多繼承,所有的都要實(shí)現(xiàn)
總結(jié)
- 上一篇: Codeforces 272C Dima
- 下一篇: 计算机辅助项目管理课程方案,计算机辅助项