j**a物件導向的編寫方式有三大特性,封裝、繼承與多型,現總結關於繼承的一些知識點。
1、繼承體現在類與類之間的關係,object為j**a所有類的父類
2、實現類的繼承通過關鍵字extends來實現,如:class 子類 extends 父類
3、類的單根性:乙個類只能有乙個父類,這點與c語言或c++不同,注意區分
4、當子類和父類在同乙個包的時候:父類中的private修飾的成員無法被子類繼承,其餘成員可以被繼承
當子類和父類不在同一包中:父類中的private和預設修飾的成員無法被繼承,public和protected可以跨包繼承;
5、繼承的優點:提公升**的復用性,減少**冗餘
6、在myeclipse中檢視繼承架構圖的快捷鍵為ctrl +t ,檢視類中所有成員快捷鍵為ctrl + o
7、native修飾符表示不是由j**a實現的,而是由其它語言比如c語言實現
8、final關鍵字:修飾常量(值不能被改變),修飾類(該類不能被繼承,比如string和system),修飾方法(該方法不能被子類重寫)
9、super:超類 super代表父類的物件
1、構造方法的特點:方法名與類名完全相同 沒有返回值型別
2、執行時機:當類在例項化過程中,會自動呼叫構造方法
3、構造方法的作用:完成類的變數的初始化工作
4、構造方法快捷鍵:alt+shirf+s generate constructor........
5、@override:註解 標識的作用
6、子類在例項化的過程中,會先執行父類的無參建構函式super(),為隱式呼叫,帶參構造必須顯式呼叫,且必須寫在第一行
1、抽象類通過關鍵字abstract進行修飾
2、抽象類的內部可以存在抽象方法:(1)使用abstract關鍵字修飾 (2)抽象方法不能存在方法體 (3)抽象方法必須由子類重寫,除非子類也是抽象類,則繼續由子類的子類重寫
3、抽象類即可存在抽象方法,又能存在非抽象方法
4、抽象類可以建構函式
假設animal類是tiger類的父類,當用子類建立乙個物件,並把物件的引用放在父類的物件中時,比如:
animal a;或a=new person();
animal a;我們稱物件a是物件b的上轉型物件(好比說「人是動物」)person b=new
person();
a=b;
上轉型物件的實體是子類負責建立的,但上轉型物件會失去原物件的一些屬性和功能。
1、上轉型物件不能操作子類新增的成員變數,不能呼叫子類新增的方法。
2、上轉型物件可以訪問子類繼承或隱藏的成員變數,也可以呼叫子類繼承的方法或子類重寫的例項方法。
3、不要將父類建立的物件與子類物件的上轉型物件混淆。
4、可以將物件的上轉型物件再強制轉換到乙個子類物件,這時,該子類物件又具備了子類所有的屬性和功能。
5、不能將父類建立的物件的引用賦給子類宣告的物件。
下例中,monkey是people類物件的上轉型物件
monkey呼叫的是子類重寫的cryspeak。需要注意的是 monkey.computer(10,10);是錯誤的,因為該方法是子類新增的方法。
6、如果子類重寫了父類的靜態方法,那麼子類物件的上轉型物件不能呼叫子類重寫的靜態方法,只能呼叫父類的靜態方法。
繼承與抽象類
1 概述 繼承描述的是事物之間的所屬關係,通過繼承可以使多種事物之間形成的一種關係體系。2 格式 使用 格式 class 子類 extends 父類 使用情況 多個類有共同的成員變數和成員方法,抽取到另外乙個類中 父類 再讓多個類繼承這個父類,我們的多個類就可以獲取到父類中的成員了。3 特點 1 類...
繼承 抽象類
什麼叫做類與類的繼承,作用是什麼?繼承後,父類與子類之間,各成員有什麼樣的影響?構造方法 成員方法 子類中,如何呼叫父類的成員?如何使用本類的成員?抽象方法與普通成員方法有什麼區別?抽象類與普通類有什麼區別?物件 public class test2 abstract class a abstrac...
PHP 物件導向 抽象類繼承抽象類
抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...