Java中的多態,抽象類,接口

Java中的多態,抽象類,接口

多態

在運行期間,判斷所引用的對象的實際類型,根據實際情況調用特定的方法,即,同一個對象的多種狀態的行爲。

 

多態所需要滿足的條件

繼承

重寫

父類引用指向子類的對象(向上轉型)

 

⽰例:喜歡寵物的年輕婦⼥

public class Animal {

public String name;

public Animal(String name) {

this.name = name;

}

public void enjoy() {

System.out.println("我是動物的enjoy⽅方法");

}

}

class Dog extends Animal {

public String furColor;

public Dog(String name, String furColor) {

super(name);

this.furColor = furColor;

}

@Override

public void enjoy() {

System.out.println("旺旺...");

}

動態綁定(多態)

動態綁定是指在運⾏期間,判斷所引⽤對象的實際類型,根據其實際的類型調⽤相應的⽅法,多態即:⼀個對象的多

種狀態的⾏爲。

}

@Override

public String toString() {

return "我是⼀一隻狗," + this.name +"是我的名字,我的⽑毛⾊色是" +this.furColor;

}

}

class Cat extends Animal {

public String eyeColor;

public Cat(String name, String eyeColor) {

super(name);

this.eyeColor = eyeColor;

}

@Override

public void enjoy() {

System.out.println("喵喵...");

}

@Override

public String toString() {

return "我是⼀一隻貓," + this.name +"是我的名字,我眼睛的顏⾊色是" +this.eyeColor;

}

}

class Lady {

private String name;

private Animal pet;

public Lady(String name, Animal pet) {

this.name = name;

this.pet = pet;

}

public void enjoy() {

pet.enjoy();

}

}

@Test

public void test2(){

Dog d = new Dog("⾦毛", "⻩色");

Cat c = new Cat("咖菲貓", "咖啡⾊");

Lady mary = new Lady("Mary", d);

Lady lucy = new Lady("Lucy", c);

mary.enjoy();

lucy.enjoy();

}

 

 

 

抽象類

用關鍵字abstract修飾的類,就是抽象類,抽象類中必然有一個或者多個抽象方法,抽象方法不需要寫任何東西,即,public abstractvoid eat();

抽象類需要注意

子類繼承父類必然要重寫父類的抽象方法,

抽象類不能實例化

 

接口

接口是一種標準,用interface關鍵字定義的。接口是抽象類的特殊化。其實是抽象方法和靜態常量值的定義的集合。

 

示例:

packagetest11;

 

public interfaceVehicle {

 

   voidstart(int speed);

   voidstop(int speed);

}

 

 

抽象類與接口的區別

接口是抽象類的特殊版本,接口的方法必須都爲抽象,抽象類中有的方法可以不爲抽象方法。

實現抽象類裏的方法時,可以實現部分的方法,但是接口裏的方法必須都要實現

抽象類中可以有私有的成員變量和私有的方法

一個類只能繼承一個抽象類,Java只支持單繼承,但是一個類可以實現多接口

接口中的方法全部被修飾爲公共的抽象方法即,public abstract類型的

 

 

 

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