1. 程式人生 > >JAVA—OOP之多型

JAVA—OOP之多型

JAVAOOP之多型

水,汽,冰就是一個物體在不同條件下的不同種狀態

1、什麼是多型?

A:生活中的多型

就好比在學校沒老師上自習課一樣,此時每種人都有不同的狀態,有的認真做作業,有的玩手機,有的講小話,有的睡覺。當聽到老師來了的這個訊息的時候,每個人都會有不同的反應,有的無所謂,有的嚇尿了,有的嚇屎了等等等。

B:程式中的多型

同一個引用型別,使用不同的例項而執行不同操作。JAVA通過方法”過載”和方法”重寫”來實現多型的。

2、多型的簡單例項

A:定義一個動物介面,和一個吃東西的方法

public interface Ianimal {

void eat();

}

B:定義一個動物抽象類,實現動物介面

public abstract class Animal implements Ianimal{

}

C:定義一個貓類,繼承動物抽象類,並重寫吃東西的方法

public class Cat extends Animal {

//方法重寫的體現

@Override

public void eat() {

System.out.println("我是貓,我吃魚...");

}

}

D:定義一個狗了,繼承動物抽象類,並重寫吃東西的方法

public class Dog extends Animal {

//方法重寫的體現

@Override

public void eat() {

System.out.println("我是狗,我吃骨頭

...");

}

}

E:測試類

public class Test {

public static void main(String[] args) {

//向上轉型:父類的引用指向子類的例項

Ianimal cat = new Cat();

Test.display(cat);

Ianimal dog = new Dog();

Test.display(dog);

}

//方法過載的體現

public static void display(Ianimal animal){

animal.eat();

}

}

F:測試結果

 

3、多型的好處

從上面的例子就能看出:如果不採用多型要實現同樣的結果的,在呼叫

display()方法的時候就必須要給不一樣的引數,而且每次也要改變方法裡面的物件去呼叫方法,這是不是很麻煩呢?採用多型我們每次只改變實現類就可以了。

A:可替換性(substitutability

B:可擴充性(extensibility

C:介面性(interface-ability

D:靈活性(flexibility

E:簡化性(simplicity

4、使用多型的必要條件

A:有繼承關係

B:向上轉型

C:必須有重寫

5、多型的標誌

A:方法引數為藉口或父類

B:返回值為父類