Java是一門面向?qū)ο蟮木幊陶Z言,抽象類是其中一個重要的概念。抽象類不能被實例化,只能被繼承,應(yīng)用于具有相似特征的類的抽象和封裝,可以有效地提高代碼的可復(fù)用性和可維護(hù)性。
在實際應(yīng)用中,汽車和飛機(jī)天然具備一些共性特征,比如它們都是交通工具,都需要具備移動的能力。因此,把汽車和飛機(jī)定義為抽象類可以更加直觀地反映出現(xiàn)實中的事物。
public abstract class Vehicle { private String name; private String color; private int width; private int height; public abstract void move(); public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setColor(String color) { this.color = color; } public String getColor() { return this.color; } public void setWidth(int width) { this.width = width; } public int getWidth() { return this.width; } public void setHeight(int height) { this.height = height; } public int getHeight() { return this.height; } }
以上是簡化版的抽象類Vehicle的代碼,其中包含了汽車和飛機(jī)的共性屬性和方法,如名字、顏色、尺寸等屬性。因為move方法的具體實現(xiàn)在不同的子類中可能不同,所以在Vehicle中定義該方法為抽象方法。
在實際的應(yīng)用中,具體的汽車和飛機(jī)類只需要繼承Vehicle類并實現(xiàn)move方法即可,無需再重復(fù)定義基礎(chǔ)屬性和方法。這有助于減少代碼的冗余和提高代碼的可讀性。
public class Car extends Vehicle { @Override public void move() { System.out.println("我是一輛車,我可以行駛在公路上"); } } public class Plane extends Vehicle { @Override public void move() { System.out.println("我是一架飛機(jī),我可以在天空中飛翔"); } }
以上是分別繼承Vehicle類的Car和Plane類的代碼,具體實現(xiàn)了move方法。Car類實現(xiàn)了在公路上行駛的方法,而Plane類實現(xiàn)了在天空中飛行的方法。這也說明了抽象類的作用,即為具體類提供了一個通用的模板,并強(qiáng)制要求具體類實現(xiàn)抽象類中的未實現(xiàn)方法。