Java面向物件——抽象類與抽象方法
阿新 • • 發佈:2020-08-22
抽象類:隨著繼承層次中一個個新子類的定義,類變得越來越具體,而父類則更一般,更通用。類的設計應該保證父類和子類能夠共享特徵。有時候將一個父類設計得非常抽象,以至於它沒有具體的例項,這樣的類叫做抽象類
abstract可以用來修飾的結構:類、方法
修飾類:
- 一旦類抽象了,就不能例項化了(不能new 了)。
- 抽象類中一定有構造器,便於子類物件例項化的時候呼叫
- 開發中,都會提供抽象類的子類,讓子類物件例項化,完成相關的操作
- 包含抽象方法的類,一定是一個抽象類,反之抽象類中是可以沒有抽象方法的。
修飾方法:
- 抽象方法只有方法的宣告,沒有方法體;
- 若子類重寫了父類中的所有的抽象方法後,此子類方可例項化;
- 若子類沒有重寫父類中的所有抽象方法,則意味著這個子類也是個抽象類,需要用absolute修飾一下
package com.abs.java; public class AbstractTest { public static void main(String[] args) { // Person p1=new Person(); // p1.eat(); } } abstract class Person{ String name; int age; public Person() { }public Person(String name,int age) { this.name=name; this.age=age; } // 抽象方法 public abstract void eat(); public void walk() { System.out.println("人走路"); } } // 子類例項化父類 class Student extends Person{ public Student(String name,int age) { super(name,age); } // 改寫抽象父類的方法——或者子類也改為抽象類 public void eat() { System.out.println("學生吃有營養的"); } }