Java基礎9:繼承abstract抽象類

1. 我們先定義一個抽象人類,命名爲AbstactPerson

 

1. 類繼承使用關鍵字extends, 在java中類只能單繼承

2. 一個類用abstract修飾, 那麼這個類就是抽象類

3. 抽象類可以繼承其他類和接口, 而且不需要實現或者重寫其中的方法

4. 抽象類不能實例化, 實例化的話只能使用匿名內部類 , 但是可以聲明一個抽象類的引用

5. 如果一個子類沒有實現抽象父類所有的abstract方法,那麼這個子類必須要定義爲抽象類

6. 當一個非抽象子類實現了其抽象父類所有abstract方法(包括父類的父類中的abstract方法, 父類實現的接口中的abstract方法), 這個子類就可以定義爲普通類

7. abstract不能與static、private、final一起修飾方法,因爲這些方法不能被重寫

8. abstract不能作用與final,因爲final類不能被繼承

 

public abstract class AbstactPerson {

   private Integer id;

   private String name;

   public AbstactPerson(Integer id, String name) {

       this.id = id;

       this.name = name;

   }

   public Integer getId() {

       return id;

   }

   public void setId(Integer id) {

       this.id = id;

   }

   public String getName() {

       return name;

   }

   public void setName(String name) {

       this.name = name;

   }

   public abstractvoid eat();

}

2. 我們先定義一個抽象員工類,命名爲Employee

 

1. super關鍵字,主要是作用於子類的方法中, 用於指向父類對象, 可以

2. 訪問父類的屬性、調用父類的普通方法和構造方法

3. 子類的構造函數第一行會默認調用父類無參的構造函數,及隱式調用super();

4. 如果父類中沒有無參構造器 , 那麼必須顯示調用super的有參構造方法

5. super不能賦值給變量, 它只是一個指示編譯器調用超類方法的特殊關鍵字。

 

public abstract class AbstactEmployee extends AbstactPerson {

   private String company;

   public AbstactEmployee(Integer id, String name) {

       super(id, name);

   }

   public AbstactEmployee(Integer id, String name, String company) {

       super(id,name);

       this.company = company;

   }

   public abstractvoid eat();

}

 

3. 我們先定義一個學生類,命名爲Student

1. this關鍵字指向當前對象本身, 可以賦值給其他變量

2. this可以調用當前類中的屬性、普通方法和構造方法

3. 當形參和成員變量名稱一樣的時候,可以用this區分

 

public class Student extends AbstactPerson {

   private String school;

   public Student(Integer id, String name) {

       super(id, name);

   }

   public Student(Integer id, String name, String school) {

       this(id, name);

       this.school = school;

   }

   @Override

   public void eat() {

       System.out.println("在學校食堂吃飯");

   }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章