/*
* abstract關鍵字的使用
* 1.abstract:抽象的
* 2.abstract可以用來修飾的結構:類、方法
*
* 3. abstract修飾類:抽象類
* > 此類不能實例化
* > 抽象類中一定有構造器,便於子類實例化時調用(涉及:子類對象實例化的全過程)
* > 開發中,都會提供抽象類的子類,讓子類對象實例化,完成相關的操作
*
*
* 4. abstract修飾方法:抽象方法
* > 抽象方法只有方法的聲明,沒有方法體
* > 包含抽象方法的類,一定是一個抽象類。反之,抽象類中可以沒有抽象方法的。
* > 若子類重寫了父類中的所有的抽象方法后,此子類方可實例化
* 若子類沒有重寫父類中的所有的抽象方法,則此子類也是一個抽象類,需要使用abstract修飾
*/
public class AbstractTest {
public static void main(String[] args) {
//一旦Person類抽象了,就不可實例化
// Person p1 = new Person();
// p1.eat();
}
}
abstract class Creature{
public abstract void breath();
}
abstract class Person extends Creature{
String name;
int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
//不是抽象方法:
// public void eat(){
//
// }
//抽象方法
public abstract void eat();
public void walk(){
System.out.println("人走路");
}
}
class Student extends Person{
public Student(String name,int age){
super(name,age);
}
public Student(){
}
public void eat(){
System.out.println("學生多吃有營養的食物");
}
@Override
public void breath() {
System.out.println("學生應該呼吸新鮮的沒有霧霾的空氣");
}
}