天天看點

JAVA學習心得--繼承、接口與泛型

1、JAVA不支援多重繼承,子類隻能有一個父類。類聲明中,用關鍵字extends來聲明一個類是另外一個類的子類。

2、子類和父類在同一個包中,子類自然繼承了其父類中不是private的成員變量和方法作為自己的,通路權限不變。不在同一個包中,子類繼承父類的protecded,public成員變量和方法,子類不能繼承父類的友好變量和方法。

3、在子類中定義的成員變量隻要和父類中的成員變量同名時(不管變量的類型),子類就隐藏了繼承的成員變量。方法重寫:子類中定義一個方法,并且這個方法的名字、傳回類型、參數個數和類型與從父類繼承的方法完全相同。重寫的方法既可以操作繼承的成員變量,也可以操作子類聲明定義的成員變量。重寫父類方法時,不可以降低方法的通路權限。

4、子類使用super調用父類的構造方法,必須是子類構造函數中的第一條語句。若不用,表示隐式地調用父類不帶參數的構造方法。在子類中使用父類被隐藏的成員變量和方法時使用 super.父類成員變量名,super.父類方法名。

5、用final聲明的類不能被繼承,不能有子類。

6、若B是A的子類或間接子類,則A a;a=new B();OR A a;B b=new B();a=b;那麼稱對象a是子類對象b的上轉型對象。上轉型對象不能操作子類聲明的成員變量和方法。但可操作子類繼承的成員變量、隐藏的成員變量、繼承的和重寫的方法。可以将對象的上轉型對象再強制轉換到一個子類對象,這時該子類對象又具備了子類的所有屬性和功能。不可以将父類建立的對象的引用指派給子類聲明的對象。

7、上轉型對象操作子類繼承或重寫的方法時,就是統通知對應的子類對象去調用這些方法。如果子類重寫了父類的某個方法後,對象的上轉型對象調用這個方法時,一定是調用了這個重寫的方法。

8、用關鍵字abstract修飾的類稱為抽象類。abstract類不能用運算符new建立對象,必須産生其子類,由子類建立對象。抽象類類體中可以有abstract方法,此方法隻允許聲明,不允許實作。如果一個非抽象類是一個抽象類的子類,它必須具體實作父類的抽象方法,既重寫父類的抽象方法。抽象類可以沒抽象方法,但如果一個類體中有抽象方法,那麼這個類必須用abstract修飾。

9、接口用interface聲明,和類聲明相似。接口體中包含常量的定義和方法的定義,其中隻進行方法的聲明,不允許實作。一個類使用implents聲明實作一個或多個接口(多個時,用逗号隔開)。如果一個類實作某個接口,那麼必須實作該接口所有方法。在類中實作時,方法的名字,傳回類型,參數個數及類型必須與接口中完全一緻。接口中方法預設是public和abstract的,接口聲明可以省略,類實作時,一定要用public修飾。如果接口方法傳回類型不是void,那麼類中實作時至少要有一個return。

10、可以把使用某一個接口的類建立的對象的引用賦給該接口聲明的接口變量中。那麼該接口變量就可以調用被類實作的接口中的方法,當接口變量調用被類實作的接口中的方法時,就是通知相應的對象調用接口的方法,這一過程稱為對象功能的接口回調。當一個方法的參數是一個接口類型時,如果一個類實作了該接口,那麼就可以把該類的執行個體引用傳值給該參數,參數可以回調類實作的方法。

11、外嵌類的成員變量在内部類中有效,内部類中的方法也可以調用外嵌類中的方法,外嵌類可以把内部類聲明對象作為外嵌類的成員變量。

12、用class 名稱<泛型清單>聲明一個類,成為泛型類。泛型清單中,并沒有指定是何種類型的資料,可以是任何對象或接口,但不能是基本資料類型。使用泛型類聲明對象時,必須要指定類中使用泛型的具體實際類型。