java的繼承、接口方面的語法及知識

繼承(inheritance):一個類只能繼承一個類
代碼複用
繼承的語法:
class ChildClass extends ParentsClass{

}
父類的屬性子類中都存在,只是有沒有權限訪問的問題
根據名字找誰是誰?
1.變量-> 類型 (類、接口)->接口
2.已經確定是變量
局部變量、形參->類的屬性-> 外部類的屬性
就近原則
構造方法:
注意默認的那個無參構造方法

優先調用父類的構造方法
如果沒有明確指出,java會插入一條調用父類的構造方法(無參的)
利用super關鍵字:
1.調用父類的構造方法
2.去訪問被隱藏的父類的屬性
3.去調用被覆寫的父類的方法
調用父類的構造方法一定出現在本類構造方法的第一行
this關鍵字的作用:
1.訪問對象的屬性或方法(當前對象)
2.調用其他構造方法
3.代表本對象

調用構造方法:先父類後子類
加載構造方法:先父類後子類
***必須在父類的所有初始化完再去執行子類的初始化
執行順序:
static屬性初始化是在類的加載時按順序執行
定義時初始化、代碼塊初始化
普通屬性初始化是在對象的構造時執行
1.定義時初始化和構造代碼塊按書寫順序執行
2.構造方法初始化
類的加載:
1.什麼是類的加載(Node類的加載)?
從硬盤上找到Node.class,解析該文件內容,生成Node類,把Node類的信息存放在內存的方法區
2.什麼情況下會觸發類的加載,並且該類不在內存中
按需加載(懶加載過程)
1.實例化該類的一個對象 new Node(1);
2.使用類的靜態屬性或者靜態方法 Main.merge(...)
3.用到子類必須先要有父類 new CNode
對象的構造、實例化 new Node
規則:
1.優先初始化父類的屬性
2.按照下面的順序執行初始化
按照代碼書寫順序,執行定義時和構造代碼塊
再去執行構造方法
覆蓋(override)(方法不是靜態方法)
方法名一致,參數列表一致
方法簽名:方法名稱+形參·列表
方法重載:方法名稱+參數列表不同
構造對象的語法:
Node node=new Node(1);
new的作用:
1)爲對象計算所需內存的大小
2)申請空間
3)初始化0x0
static只能出現在成員級別
static 和對象進行解綁
abstract 關鍵字有什麼作用?
1.修飾類·,該類是抽象類,無法被實例化的類
abstract class A{} new A是錯誤的
2.修飾方法,該方法是抽象方法,沒有被實現的方法
abstract void method();
包含抽象方法的一定是抽象類。
抽象類不一定包含抽象方法。
fina關鍵字有什麼作用:
1.修飾類:表示該類無法被繼承
2.修飾方法:該方法無法被覆寫(方法名和形參)
3.修飾變量:該變量的值只能被初始化一次,無法再次修改
final類中不可以有abstract方法
final類和final方法基本沒關係
重載overload和覆寫override:
1.方法簽名:方法名+形參列表
重載:方法名相同,形參列表不同
2.覆寫,發生在子類繼承父類或者類實現接口
1).方法名和形參列表相同
2).方法的返回類型要比父類的返回類型相等或者小
3).訪問限定符:訪問限定符只能和父類的相同或者大
4).@Override 註解

接口:一個類可以有多個接口
interface 接口名
引用=對象;
1.引用只能指向對象,或者什麼都不指向
2.數組引用、類類型引用、接口類型的引用
3.對象:數組對象、非抽象類類型的對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章