在抽象類中的成員方法可以包括一般方法和抽象方法。抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒有方法體,也就是說抽象方法只需要聲明而不需要實現。當一個方法爲抽象方法時,意味着這個方法必須被子類的方法所重寫,否則其子類的該方法仍然是abstract的,而這個子類也必須是抽象的,即聲明爲abstract。
抽象類中不一定包含抽象方法,但是包含抽象方法的類一定要被聲明爲抽象類。抽象類本身不具備實際的功能,只能用於派生其子類。抽象類中可以包含構造方法,但是構造方法不能被聲明爲抽象。
抽象類不能用final來修飾,即一個類不能既是最終類又是抽象類。
abstract不能與private、static、final、native並列修飾同一個方法。
程序舉例:
abstract class Animal //定義抽象類
{
String str;
Animal(String s) //定義抽象類的一般方法
{
str=s;
}
abstract void eat(); //定義抽象方法
}
class Horse extends Animal //定義繼承Animal的子類
{
String str;
Horse(String s)
{
super(s); //調用父類的構造方法
}
void eat() //重寫父類的抽象方法
{
System.out.println("馬吃草料!");
}
}
class Dog extends Animal
{
String str;
Dog(String s)
{
super(s);
}
void eat()
{
System.out.println("狗吃骨頭!");
}
}
class test
{
public static void main(String args[])
{
Horse Horse1 = new Horse("馬");
Dog Dog1 = new Dog("狗");
Horse1.eat();
Dog1.eat();
}
}
運行結果:
馬吃草料!
狗吃骨頭!