淺談java多態的完成重要表現在哪些方面。本站提示廣大學習愛好者:(淺談java多態的完成重要表現在哪些方面)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談java多態的完成重要表現在哪些方面正文
thinking in java3中的多態
People are often confused by other, non-object-oriented features of Java, like method overloading, which are sometimes presented as object-oriented. Don't be fooled: If it isn't late binding, it isn't polymorphism
按文面翻譯
人們老是被java的另外一種非面向對象的特征所迷惑,就像辦法重載,有時刻它以面向對象而存在,請不要犯傻,假如沒有前期綁定(也就是運轉期的靜態綁定),它就不是多態.
所以,這段話要表達的意思就是說,多態要有靜態綁定,不然就不是多態,辦法重載也不是多態(由於辦法重載是編譯期決議好的,沒有前期也就是運轉期的靜態綁定)
當知足這三個前提 1.有繼續 2. 有重寫 3. 要有父類援用指向子類對象
<span > 例: public class Address { private String name; public Address(String name){ this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 界說基類(籠統類): public abstract class Vehicle { abstract void go(Address address); } Car關於基類的完成: public class Car extends Vehicle{ @Override public void go(Address address){ System.out.println("Car to " + address.getName()); } } Plane關於基類的完成: public class Plane extends Vehicle{ @Override void go(Address address) { System.out.println("Plane to " + address.getName()); } } Driver中多態: public void drive(Vehicle v){ ///多態,父類援用指向子類對象,現實傳過去的是籠統類Vehicle的子類,或許完成類,然後編譯器會依據詳細完成類,來找完成辦法。 v.go(new Address("杭州(abstract)")); ///此辦法在詳細的完成中被重寫 } Test: public static void main(String[] args) { Driver d = new Driver(); d.drive(new Plane()); //現實是Plane對象,則編譯器就會找到Plane中,對go的完成 d.drive(new Car()); //現實是Car對象,則編譯器就會找到Plane中,對go的完成 } 輸入成果: Plane to 杭州(abstract) Car to 杭州(abstract) </span>
多態:就是指雷同的事物的分歧狀況,好比:水。水可以有三種狀況:
氣體、液體和固體。那末在JAVA中的多態也能夠懂得成這個意思,就是:
將父對象設置成為和一個或多個它的子對象相等的技巧,
好比Parent=Child;
多態性使得可以或許應用統一類(父類)援用分歧類的對象,
和依據所援用對象的分歧,以分歧的方法履行雷同的操作。
多態完成包含兩種方法:重載和重寫
例如:Animal a = new Tiger(); 這是一個老話題了,呵呵……
父類援用指向子類對象,Animal類中包括一個eat()辦法,而Tiger類繼續自
Animal類,假如子類重寫了父類的eat()辦法,則挪用的時刻,便可以依照子類
的情勢挪用,實質上是父類的辦法,然則子類重寫以後,就成了另外一種方法,這就是多態。
以上就是小編為年夜家帶來的淺談java多態的完成重要表現在哪些方面的全體內容了,願望對年夜家有所贊助,多多支撐~