標籤:原因 返回 模式 大括弧 事物 table pen 方法重寫 ras
javaEE基礎08一、
繼承
特點:繼承父類的屬性和方法,單繼承(多繼承)
特性:方法的複寫(重寫)
比如:人可以養狗
人------>狗:整體和部分(擁有)關係
關鍵字:extends
結構: A類 extends B類:A類繼承B類
繼承中所要注意的事項:
1.不要為了繼承而繼承
2.父類的私人變數(方法)不能夠被繼承
3.父類的建構函式不能被繼承
4.子類在調用自己的構造方法時,會預設先調用父類的無參構造方法
5.對於super的調用必須是構造器中的第一個語句
6.子類不能繼承不在一個包中預設許可權的成員
什麼時候使用繼承:
兩個類之間必須要滿足is a關係,才能擁有繼承關係。
二、
super關鍵字
Super:指向父類對象的引用空間
Super關鍵字的作用:
1.當子類和父類存在同名的成員變數時,可以通過super來調用父類的成員變數
2.Super可以用來調用父類的構造方法
public Zi(String color, String name,int age){ //用super來調用父類的構造方法 super(name,age); //必須是構造器中的第一個語句 this.color = clolr; } |
Super使用的主要事項:
1.用super調用父類的構造方法,必須是構造方法中的第一個語句
2.Super只能出現在子類的方法和構造方法中
3.Super和this不能同時調用構造方法(因為兩者都必須要在第一個語句)
Super和this的區別:
1.代表的事物不一樣:
this:所屬方法調用者對象
super:表示父類對象的引用空間
2.使用前提不一樣:
super:只能在繼承的條件下才能使用
This:在非繼承條件下也可以使用
3.調用構造方法:
super:調用父類的構造方法
this:調用本類的構造方法
二、
重寫
方法的複寫作用:
父類的方法滿足不了子類的實現,就需要通過複寫方法實現父類的行為
方法的重寫使用注意點:
1.方法重寫,必須存在繼承關係
2.方法重寫,方法名和形式參數必須一致
3.方法重寫,子類的許可權修飾符必須要大於或者等於父類的許可權修飾符
4.方法重寫,子類的傳回值類型必須小於或等於父類的傳回值類型
5.方法重寫,子類的異常類型要小於等於父類的異常類型
基礎資料型別 (Elementary Data Type):上下級不明確,因此基礎資料型別 (Elementary Data Type)在第4點不成立
方法重載:
方法名一樣:參數列表個數、類型以及順序不一樣
三、關鍵字
instanceof(執行個體類型)關鍵字作用:
1.用來判斷某個對象是否屬於某一個類
2.Instanceof:使用前提對象指定的類有繼承關係或實現關係
final關鍵字:
1.如果用final修飾基礎資料型別 (Elementary Data Type)變數,改變了就不能重新賦值,第一次的結果就為最終的結果(final修飾的變數必須要初始化)
2.如果用final修飾引用資料類型,無法給引用資料類型變數賦值
3.如果用final修飾方法,方法就不能被重寫
4.如果用final修飾類,類就不能被繼承
如何用final表示常量
例:public final static double PI = 3.14; //變數名要大寫 |
格式: public final static 基礎資料型別 (Elementary Data Type) 變數名
abstract關鍵字:
被abstract修飾的類就叫做抽象類別
被abstract修飾方法叫做抽象方法
如果一個類繼承了抽象類別,必須要實現抽象類別中的抽象方法
Abstract關鍵字的使用:
1.如果一個方法沒有方法體(大括弧的內容即方法體),那麼這個方法必須要abstract修飾
2.如果一個類中有抽象方法,那麼這個類必須要abstract修飾,為抽象類別
3.如果一個非抽象類別,繼承了這個抽象類別,那麼這個非抽象類別中必須重寫所有的抽象方法
4.一個抽象類別是可以擁有非抽象方法的
5.一個抽象類別可以擁有構造方法,作用是讓子類能夠初始化父類中的變數
6.抽象類別不能建立對象
原因:如果建立對象,對象可能會調用到抽象方法,沒有意義
7.一個抽象類別中是可以不出現抽象方法的
例: abstract class Graph { //public Graph(){}; 預設有一個無參構造 abstract public void area(); } |
Abstract不能和:private、static、final使用
Abstract關鍵字什麼時候使用:
在描述一個事物的時,發現該事物存在某種行為,但該行為又不具體,這種行為就叫做抽象行為,這時使用到抽象類別
四、
介面
例子:鉛筆:帶橡皮擦的鉛筆
兩個功能:1.寫字----> 鉛筆 2.擦字---->橡皮
現實:java是單繼承,不能同時有兩個功能
介面定義模式:
用interface關鍵字來表示介面
//定義一個擦字的介面 interface Eraser { int a = 10; //在介面中定義的變數必須初始化,介面中的變數是用final修飾的 //定義在介面中的方法是不需要實現的 public void clear();//預設是用abstract修飾的,介面中的方法都是抽象方法 } |
實現介面關鍵字 implements:
class EraserAndPencil implements Eraser, Pencil{ //在裡面必須實現介面裡的方法 } |
Java中可以支援多實現,一個類可以實現多個介面,多個介面在 implements 後面用逗號隔開
介面的作用:
1.用來拓展功能
2.讓程式解耦
3.定義約束
介面的使用注意事項:
1.介面是一個特殊的類,可以定義屬性和方法
2.屬性預設用final修飾的:public static final int age = 10;實際上是一個常量
3.方法都是抽象的:abstract public
4.介面不能建立對象
5.介面沒有構造方法
6.介面是給類去實現的非抽象類別實現介面時,必須將介面中的方法都實現
interface Eraser { int a = 10; //在介面中定義的變數必須初始化,介面中的變數時用final修飾的 //定義在介面中的方法是不需要實現的 public void clear();//預設是用abstract修飾的,介面中的方法都是抽象方法 } |
類和介面的關係:實現關係
1.一個非抽象類別實現介面,必須實現介面中的方法
2.一個抽象類別實現介面,可以不實現介面中的方法,如果一個非抽象類別繼承抽象類別,那麼這個類需要實現這個介面中的所有方法
介面和介面之間存在繼承關係,可以繼承多個介面
javaEE基礎08