java學習-向上轉型和向下轉型
阿新 • • 發佈:2018-12-21
一,多型
在設計一個方法的時候,通常希望該方法具備一定的通用性。比如實現一個動物叫的方法,每個動物的叫聲是不一樣的,可以在方法中接收一個動物型別的引數,當傳入貓類物件的時候就發出喵的聲音,相對傳入狗的物件就發出汪的聲音。同一個方法這種應為引數不同而導致執行效果不同的現象叫做多型。
二,向上轉型
向上轉型—將子類的物件賦值給父類的引用。
一個引用能夠呼叫那些成員(變數和方法),取決於這個物件的型別
一個引用呼叫的是哪個方法,取決於這個引用指向的物件
public class Animal { public void bark(){ System.out.println("animal bark"); } public void bite(){ System.out.println("bite"); } public void eat(){ System.out.println("food"); } } class Dog extends Animal { public void bark(){ System.out.println("wang"); } public void bite(){ System.out.println("dog bite"); } } class Cat extends Animal { public void bark(){ System.out.println("miao"); } } public class Testbark { public static void main(String[] args) { Animal A = new Dog();//向上轉型 A.bark(); A.bite(); A = new Cat(); A.bark(); A.bite(); } }
輸出為:
wang
dog bite
miao
bite
這就是向上轉型,Animal A = new Dog();將子類物件Dog轉化為父類物件Animal。這個時候A這個引用呼叫的方法是子類方法。
我的理解就是,比如用Animal定義了A這個引用,裡面有這三種方法,Animal A = new Dog()將Dog物件裡面的方法賦值給A這個引用。所以最後使用的就是Dog的方法了。這個時候如果執行A.eat();那麼最後就會執行父類的eat方法。