對於Java程序員來說,public和abstract是兩個非常常見的關鍵字。public通常用於控制訪問許可權,使得類、變數和方法可以被其他類訪問。而abstract用來定義抽象類和抽象方法,表示該類或方法只定義方法的簽名,沒有實現。在Java中,同時使用public和abstract關鍵字是非常常見的,我們通常會定義public abstract的類或方法。
一、public abstract在Java中的基礎
在Java中,public abstract通常用於定義抽象類和抽象方法。抽象類是一種不能被實例化的類,通常只用於定義介面和抽象方法。抽象方法則是沒有實現的方法,它只有方法的簽名,沒有方法體。如果一個類或方法被定義為public abstract,那麼這個類或方法必須是抽象的。
public abstract class Animal { public abstract void makeSound(); } public class Cat extends Animal { public void makeSound() { System.out.println("Meow"); } }
在上面的例子中,Animal是一個抽象類,它只有一個抽象方法makeSound。Cat繼承Animal類,並且實現了makeSound方法。由於Animal類是抽象的,因此它不能被實例化,我們只能定義Cat類的實例。
二、public abstract的重要性
1. 實現多態性
public abstract最重要的作用是實現多態性。多態性是指不同對象對同一消息做出不同的響應。在Java中,如果一個類繼承了一個抽象類,那麼它必須實現抽象類中的所有抽象方法,否則該類也必須定義為抽象類。這樣一來,我們就可以使用多態性來處理對象。例如:
public abstract class Shape { public abstract void draw(); } public class Circle extends Shape { public void draw() { System.out.println("Drawing Circle"); } } public class Square extends Shape { public void draw() { System.out.println("Drawing Square"); } } public static void main(String[] args) { Shape s1 = new Circle(); Shape s2 = new Square(); s1.draw(); s2.draw(); }
在上面的例子中,我們定義了一個抽象類Shape,並且定義了兩個具體的類Circle和Square,它們都繼承Shape類並實現了draw方法。在main方法中,我們可以通過多態性將Circle和Square類實例化成Shape類型的對象,並調用draw方法,這樣就可以根據傳入的不同對象調用不同的方法。
2. 實現代碼復用
public abstract還可以用於實現代碼復用。抽象類是一種不能被實例化的類,通常只用於定義介面和抽象方法。當我們創建一個新的類時,如果這個類和其他類很相似,那麼我們可以將這些共性抽象出來,定義成一個抽象類。這樣一來,我們就可以通過繼承抽象類來實現代碼的復用。
public abstract class Employee { private String name; private double salary; public Employee(String name, double salary) { this.name = name; this.salary = salary; } public String getName() { return name; } public double getSalary() { return salary; } public abstract double calculateSalary(); } public class Manager extends Employee { private double bonus; public Manager(String name, double salary, double bonus) { super(name, salary); this.bonus = bonus; } public double calculateSalary() { return getSalary() + bonus; } } public static void main(String[] args) { Employee e = new Manager("Tom", 5000.0, 1000.0); System.out.println(e.getName() + "的工資是:" + e.calculateSalary()); }
在上面的例子中,我們定義了一個Employee抽象類,它包含了兩個成員變數name和salary,以及一個抽象方法calculateSalary。Mananger類繼承了Employee,並且實現了calculateSalary方法。在main方法中,我們可以將Manager類實例化成Employee類型的對象,並調用calculateSalary方法,這樣就可以計算出Manager的工資。
三、總結
public abstract是Java中非常重要的關鍵字之一,它可以用於定義抽象類和抽象方法。它的最重要的作用是實現多態性,同時也可以用於實現代碼的復用。如果你想編寫高質量、易於維護的Java代碼,那麼你必須理解public abstract的重要性,並善於使用它。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297214.html