知識點總結:
一、封裝:
私有屬性,把成員變量的訪問修飾符聲明爲private;
公開方法對屬性賦值和取值,聲明getXXX() 和 setXXX()方法;
二、繼承:
在java中是單繼承關係,但是可以實現多重繼承;
在實例化子類時,先執行父類的構造方法,再執行子類的構造方法;
子類可以繼承父類非私有的屬性和方法,不能繼承構造方法;
當父類的方法無法滿足子類需要時,子類可以重寫父類方法;
在子類中,使用super關鍵字表示父類對象,可以用在非靜態方法中;
super()表示父類構造器,只能用在子類的構造器中,並且是在構造器的第一行;
this代表當前子類對象,可以使用在子類的非靜態方法中;
this()表示子類的構造器,只能用在子類的構造器中,並且是在構造器的第一行;
不能和super()同時出現;
當類使用final關鍵字修飾時,該類不能被繼承;
**重寫規則:**
重寫方法的聲明部分(返回值類型、方法名、參數列表)要和父類中的方法保持一致;
重寫方法的訪問權限要大於等於父類的方法;
重寫方法可以拋出任意的非強制性異常,如果父類方法中拋出了異常,子類中的重寫方法拋出異常的範圍要小於等於父類;
當父類的方法使用final關鍵字修飾時,可以被繼承,但不能被重寫;
當父類的方法使用static修飾時,可以被繼承,不能被重寫,但是可以在子類中重寫聲明;
(排除final和static關鍵字的情況下)
如果在同包下,子類可以重寫父類的非私有的方法;
不在同包下,子類只能重寫父類的public和protected修飾的方法;
不能被繼承的方法,不能重寫,例如:構造方法;
三、多態:
繼承;
方法重寫;
父類引用指向子類對象(向上轉型);
父類引用調用子類重寫的方法,指向的是重寫方法;
四、抽象類:
使用abstract關鍵字修飾的類,即爲抽象類;
抽象類中可以聲明普通類的所有成員之外,還可以聲明抽象方法;
含有抽象方法的類一定是抽象類,抽象類中不一定有抽象方法;
抽象類不能被實例化對象,只能被繼承,使用多態的方式獲取對象;
也可以使用匿名內部類的方式創建對象;
如果一個類繼承了抽象類,必須要重寫抽象類中的所有抽象方法;
抽象方法中可以聲明構造方法;
五、接口:
使用interface關鍵字修飾;
接口是可以多繼承的;
接口可以被類實現,一個類可以實現多個接口;
接口是一個完全抽象的抽象類,接口中的方法都是抽象方法(JDK1.7↓);
接口中不能有構造方法;
接口中不能聲明變量,只能聲明常量,默認的聲明格式爲:public static final int i = 1;
接口的聲明和接口中方法的聲明默認都使用了abstract關鍵字;