在Java中,透過介面和抽象類別來實現多態性。介面定義了必須由實作它的類別實作的方法;抽象類別包含抽象方法,必須由其子類別實作。透過建立物件數組並呼叫相同方法,可以根據元素的實際類型呼叫不同的實現,從而實現多態性。例如,可以定義一個 Shape 介面來定義 Shape 類別的繪製方法,然後建立具有不同實現的多個形狀類別(如 Circle、Square、Triangle),並透過一個畫布類別使用多態性來繪製所有形狀。
Java 中介面和抽象類別的多態性應用
多態性是物件導向程式設計(OOP) 中的關鍵概念,它允許物件以不同的方式回應相同的方法呼叫。在 Java 中,可以透過介面和抽象類別來實現多態性。
介面
介面定義了必須由實作它的類別實作的一組方法。介面本身不包含任何實現,只是指定了合約。
public interface Shape { double getArea(); }
抽象類別
抽象類別是具有至少一個抽象方法的類別。抽象方法沒有實現,必須由其子類別實現。抽象類別可以包含具體方法和欄位。
public abstract class Animal { protected String name; public abstract void makeSound(); }
多態性
使用介面和抽象類,可以建立物件數組,其中每個元素都有不同的類型。當呼叫這些元素上的相同方法時,會根據實際元素的類型呼叫不同的實作。
Shape[] shapes = { new Circle(), new Square(), new Triangle() }; for (Shape shape : shapes) { System.out.println("Area: " + shape.getArea()); }
實戰案例
考慮一個可以繪製不同形狀的畫布類別。可以使用以下介面定義形狀:
public interface Shape { void draw(); }
然後,可以建立具有不同繪製實作的多個形狀類別:
public class Circle implements Shape { @Override public void draw() { System.out.println("Drawing a circle"); } } public class Square implements Shape { @Override public void draw() { System.out.println("Drawing a square"); } } public class Triangle implements Shape { @Override public void draw() { System.out.println("Drawing a triangle"); } }
畫布類別可以接受Shape 物件數組,使用多態性來繪製所有形狀:
public class Canvas { public void drawAll(Shape[] shapes) { for (Shape shape : shapes) { shape.draw(); } } }
透過介面和抽象類,Java 中的多態性允許根據物件的實際類型動態呼叫方法,從而實現了可擴展和可重複使用的程式碼。
以上是Java 中介面和抽象類別的多態性應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!