本文實例講述了Java中的多態用法。分享給大家供大家參考。具體分析如下:
多態,是物件導向的程式設計語言最核心的特徵。封裝性、繼承性都比較簡單,所以這裡只對多型做一個小小的筆記。 。 。
1、什麼是多態?
多態意味著一個物件可以多重特徵,可以在特定的情況下,表現出不同的狀態,從而應對不同的屬性和方法。在Java中,多態的實作指的是使用同一個實作接口,以實作不同的物件實例。
例如,我們定義一個Parent類,再定義一個getName()方法回傳一個字串,定義一個形參為Parent類型的成員方法doSomething(Parent obj),在這個方法中呼叫obj.getName()。然後再定義兩個類別A和B,都從Parent類別繼承而來,在子類別中重寫getName()方法。最後在main方法中建立一個Parent類別的物件objP,呼叫objP.doSomething()方法並向其傳遞class A,和class B 的參考。觀察輸出結果。
class Parent { private String name = "parent"; public String getName() { return this.name; } public void doSomething(Parent obj) { //输出类名 System.out.println(obj.getName()); } public static void main(String[] args) { Parent objP = new Parent(); objP.doSomething(new A()); // 传递A的引用,则调用的是A类的getName方法 objP.doSomething(new B()); // 传递B的引用,则调用的是B类的getName方法 } } class A extends Parent { private String name = "class A"; //@重写getName()方法 public String getName() { return this.name; } } class B extends Parent { private String name = "class B"; //@重写getName()方法 public String getName() { return this.name; } }
可見,父類別的doSomething方法多型地呼叫了我們傳遞的物件的getName方法,而不是Parent類別本身的getName方法。
2、Java中的接口
Java中的接口,是一系列方法的聲明。一個介面只有方法的特徵,而沒有方法的實作。這些方法可以從別處透過特定的類別來實現。在Java中,用關鍵字interface來聲明一個介面。
用介面實現多態的實例:
interface Name { //只声明,不实现 public String getName(); } class A implements Name { private String name = "class A"; //实现getName方法 public String getName() { return name; } } class B implements Name { private String name = "class B"; //实现getName方法 public String getName() { return name; } public static void main(String[] args) { Name obj = new A(); System.out.println(obj.getName()); } }
可以看到,印出了類別A的名字class A。
PS:一個類別如果沒有實作介面中的所有方法,那麼這個類別必須被宣告為abstract(抽象的)。一個abstract類別是不允許實例化物件的。
希望本文所述對大家的java程式設計有幫助。
更多Java中的多態用法實例分析相關文章請關注PHP中文網!