抽象類

為什么存在抽象類

抽象類是將類共有的方法抽取出來,不同的方法聲明為抽象類;這樣新增一種類型時候只需要繼承抽象類,實現(xiàn)抽象方法就可以了,降低了實現(xiàn)新類的難度。

使用抽象類需要注意的點

  • 抽象修飾符 abstract
  • 抽象類不能被實現(xiàn)
  • 成員變量,方法跟普通類一樣
  • 如果一個類含有抽象方法那么必須聲明為抽象類
  • 繼承抽象類的類必須實現(xiàn)抽象方法
  • 類與抽象類成員變量重疊的情況下訪問抽象變量方式:super.name

樣例

// abstract 標(biāo)記抽象類
public abstract class Employee {
    protected String name;
    protected int age;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public Employee(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Employee(){}

    public void play(){
        System.out.println(String.format("name: %s age: %s", this.name, this.age));
    }

    // 靜態(tài)方法不能被繼承類重寫
    public static void jump(){
        System.out.println("jump ...");
    };

    // 標(biāo)記為抽象方法
    protected abstract void remove(int duration);
}
public class User extends Employee {
    public String name;

    public User(String name) {
        super(21, "emp1");
        this.name = name;
    }

    @Override
    public void play() {
        System.out.println("play ..." + super.name);
    }

    @Override
    public void remove(int duration) {
        System.out.println("remove ..." + this.age);
    }

    public static void test(Employee emp){
        emp.play();
    }
    public static void main(String[] args) {
        Employee employee = new User("xx-yy");
        employee.remove(1);
        employee.play();
        employee.jump();

        test(employee);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容