抽象類 多型與介面

2021-10-05 05:38:19 字數 2805 閱讀 3268

abstract

修飾的類為抽象類 方法為抽象方法。

含有抽象方法,必被宣告為抽象類。

抽象類不能例項化。

不能修飾私有方法、構造器、靜態方法、final方法。

final

修飾的類不能被繼承

修飾的方法不能被子類重寫

標記的變數名稱大寫且只能被賦值一次。

介面介面中所有方法均為公共抽象方法。pulic abstract

把共同行為特徵定義在介面中。

只能被public修飾

介面中所有成員變數都是全域性常量 public static final

inte***ce是介面

implements是實現

示例**:

父類介面

package ray;

public inte***ce flyer

子類實現介面

package ray;

//抽象類可以實現介面 也可以對介面中的抽象方法不予以理會

public abstract class pet implements flyer

public pet(string name, int age, double weight)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

public double getweight()

public void setweight(double weight)

@override

public string tostring()

public abstract void speak();

public abstract void eat();子類繼承了pet中沒被實現的介面 所以既要多型實現pet方法也要間接實現flyer介面

package ray;

public class bird extends pet

public bird(string name, int age, double weight, int flyspeed)

public int getflyspeed()

public void setflyspeed(int flyspeed)

@override

public void takeoff()

@override

public void fly()

@override

public void land()

@override

public void speak()

@override

public void eat()

@override

public string tostring() }

測試package ray;

public class flyertest }

結果:翅膀一展就搞定

我喜歡自由

隨心所欲

吱吱吱吃蟲子

父類介面

package ray;

public inte***ce flyer

父類抽象

package ray;

public abstract class pet

public pet(string name, int age, double weight)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

public double getweight()

public void setweight(double weight)

@override

public string tostring()

public abstract void speak();

public abstract void eat();}

子類package ray;

public class bird extends pet implements flyer

public bird(string name, int age, double weight, int flyspeed)

public int getflyspeed()

public void setflyspeed(int flyspeed)

@override

public void takeoff()

@override

public void fly()

@override

public void land()

@override

public void speak()

@override

public void eat()

@override

public string tostring() }

測試package ray;

public class flyertest

}}結果吱吱吱

吃蟲子翅膀一展就搞定

我喜歡自由

隨心所欲

pet [name=小飛, age=2, weight=0.2], 飛行速度:20

繼承比介面更親密一些

介面可以繼承介面用extends

多型 抽象類 介面

抽象類介面 什麼是多型?同乙個物件,在不同時刻表現出來的不同形態 1.有繼承 實現的前提 2.有方法的重寫 3.有父類引用指向子類物件 例 animal a new cat 成員變數訪問 父類中有的屬性,才能正常編譯 編譯看左邊 如子類也有相同屬性,訪問執行出來的是父類中的屬性值 成員方法訪問 父類...

多型 抽象類 介面

同一物件,在不同時刻表現出來的不同形態 多型的前提和實現 有繼承 實現關係 有方法重寫 有父類引用指向子類物件 多型中成員訪問特點 成員變數 編譯看左邊,執行看左邊 成員方法 便宜看左邊,執行看右邊 為什麼成員方法和成員變數的訪問不一樣呢?因為成員方法有重寫,而成員變數沒有 多型的好處和弊端 好處 ...

多型 抽象類 介面

1.多型的使用方式 父類引用指向子類物件 同一型別的物件引用指向了不同型別的子類物件,具體方法的實現不同 呼叫的方法需要是子類和父類都有的,但是執行的是子類的,就是執行醫生類覆蓋的 重寫的 eat方法 也就是所謂的 編譯看左邊,執行看右邊!能夠呼叫什麼方法,取決於引用的型別,而方法中具體怎麼執行,要...