1.java只支持單繼承逝段,不支持多繼承
因為多繼承容易帶來安全隱患矢沿,當多個父類中定義了相同功能茂卦,當功能不同時青团,子類對象不確定要運行哪一個
但是java保留了這種機制譬巫,并用另一種體現(xiàn)形式來完成表示,多實現(xiàn)
java支持多層繼承督笆,也就是一個繼承體系
如何使用一個繼承體系中的功能呢芦昔?
想要使用體系,先查閱體系父類的描述胖腾,因為父類中定義的是該體系中共性的功能烟零。
那么在具體調(diào)用時,要創(chuàng)建最子類的對象咸作,為什么呢锨阿?1.因為有可能父類不能創(chuàng)建對象2.創(chuàng)建子類對象可以使用更多的功能,包括基本的也包括特有的
簡單一句話:查閱父類功能记罚,創(chuàng)建子類對象使用功能
2.final:最終墅诡。 作為一個修飾符
1):可以修飾類,函數(shù),變量
2):被final修飾的類不可被繼承末早,為了避免被繼承烟馅,被子類復寫功能
3):被final修飾的方法不可以被復寫
4):被final修飾的變量時一個常量只能賦值一次,既可以修飾成員變量然磷,也可以修飾局部變量(final int a= 4郑趁;a終身為4 )? 當在描述事物時,一些數(shù)據(jù)的出現(xiàn)值是固定的姿搜,那么這時為了增強閱讀性寡润,都給這些值起個名字,不需要修改 方便閱讀舅柜;(final double PI = 3.14)
抽象類 abstract
當多個類中出現(xiàn)相同功能梭纹,但是功能主體不同。這時可以進行向上抽取致份,這時变抽,只抽取功能定義,而不抽取功能主體氮块。
抽象類:1.抽象方法一定在抽象類中
2.抽象方法和抽象類都必須被abstract關鍵字修飾
3.抽象類不可以用 new創(chuàng)建對象绍载,因為調(diào)用抽象方法沒有意義
4.抽象類中的抽象方法要被使用,必須有子類復寫起所有的抽象方法后雇锡,建立子類對象調(diào)用逛钻,如果子類只覆蓋了部分抽象方法,那么該子類還是一個抽象類
抽象類和一般類沒有太大的不同
該如何描述事物锰提,就如何描述事物曙痘,只不過,該事物出現(xiàn)了一些看不懂的東西
這些不確定的部分立肘,也是該事物的功能边坤,需要明確出現(xiàn),但是無法定義主體
通過抽象方法來表示谅年。
抽象類比一般類多了抽象函數(shù)
抽象類不可以實例化
特殊:抽象類中可以不定義抽象方法茧痒,這樣做僅僅是不讓該類建立對象
接口
接口:是不可以創(chuàng)建對象的,因為有抽象方法
實現(xiàn)接口的類必須對接口中的抽象方法全部覆蓋后融蹂,才能實例化旺订,否則這個類還是一個抽象類
接口是對外暴露的規(guī)則
接口是程序的功能擴展
接口可以用來多實現(xiàn)
類與接口之間是實現(xiàn)關系,而且類可以繼承一個類的同時實現(xiàn)多個接口
接口與接口之間可以有繼承關系
多態(tài)
多態(tài):可以理解為事物存在的多種體現(xiàn)形態(tài)
1.多態(tài)的體現(xiàn)
父類的引用指向了自己的子類對象
父類的引用也可以接收自己的子類對象
2.多態(tài)的前提
必須是類與類之間有關系超燃,要么有繼承区拳,要么有實現(xiàn)
通常還有一個前提,存在覆蓋
3.多態(tài)的好處
多態(tài)的使用大大提高了程序的擴展性
多態(tài)的弊端
提高了擴展性意乓,但只能使用父類的引用訪問父類的成員樱调。
4.多態(tài)的應用
Animal a = new Cat();//類型提升? 向上造型
//如果想要調(diào)用貓的特有方法時,如何操作?
強制將父類的引用笆凌,轉換成子類類型
Cat cat = (Cat)a;//向下造型
cat.catchMouse();
//千萬不要將父類對象轉成子類類型 圣猎,我們能轉換的是父類引用指向了自己的子類對象時,該引用可以被提升乞而,也可以被強制轉換
// 多態(tài)自始至終都是子類對象在做著變化
5.多態(tài)的出現(xiàn)代碼中的特點
在多態(tài)中成員函數(shù)(非靜態(tài))的特點:
Fu f = new Zi();
在編譯時期:參閱引用型變量(f)所屬的類中是否有調(diào)用的方法送悔。如果有,編譯通過爪模,沒有編譯失敗
在運行時期:參閱對象所屬(Zi)的類中是否有調(diào)用的方法放祟。
簡單總結:成員函數(shù)在多態(tài)調(diào)用時,編譯看左邊呻右,運行看右邊(類)
在多態(tài)中,成員變量的特點: 編譯和運行都看左邊(引用型變量所屬的類)
Fu f = new Zi(); f.num = 5? 父類中定義的? Int num = 5鞋喇;
Zi z = new Zi(); z.num = 8? 子類中定義的? Int num = 8声滥;
在多態(tài)中,靜態(tài)成員函數(shù)的特點: 編譯和運行都看左邊(引用型變量所屬的類) 靜態(tài)方法是不需要對象的