抽象類別 : 用關鍵字abstract ;一個類別如果被abstract修飾那麼這個就叫抽象類別。
如果abstract修飾方法 ,那麼這個方法就叫抽象的方法
如果abstract修飾類,那麼這個類別叫抽象類別。
如果一個類別繼承了抽象類,必須要實作抽象類別中的抽象方法。
abstract關鍵字的使用:
方法體 : 方法中大括號的內容就是方法體。
1.如果一個方法沒有方法體,那麼這個方法必須要用abstract 來修飾。
2.如果一個類別中有抽象方法,那麼這個類別必須用abstract 來修飾 ,為抽象的類別。
3.如果一個非抽象的類,繼承了這個抽象類,那麼這個非抽象類別中必須重寫所有的抽象方法。
4.一個抽象類別中是可以有非抽象的方法。
5.一個抽象類別中是可以存在建構方法。作用是讓子類別能過度初始化父類別中的變數。
6.抽象類別無法建立物件
原因:如果建立對象,物件就可以呼叫到抽象方法,這樣呼叫抽象方法是沒有意義。
7.一個抽象類別中是可以不出現抽象方法的。
abstract關鍵字的使用場景:
我們在描述一個事物的時候,發現這個事物確實存在某種行為,但是這種行為又不具體,那麼這個時候就可以抽取這種行為聲明一個沒有實現的行為,這種行為就叫抽象的行為,那麼這個時候就需要用到抽象類別。
//透過abstract 關鍵字修飾的類別稱為抽象類別。
abstract class Animal
{
String name;
String color;
abstract public void run ();//抽象方法是沒有主體,沒有方法的具體實作。
public void eat (){
System.out.println("動物在吃東西");
}
}
//一非抽象的類別繼承了抽象類,必須實作抽象類別中的所有方法。
class Dog extends Animal
{
//需要重寫父類中的run方法
public void run(){
System.out.println(name + "跑的很快");
}
}
class Fish extends Animal
//重寫方法: 沒有強制要求重寫run方法。
//應該要重寫,但是我可以不重寫。這樣就容易出問題。
//想一個方法強制讓子類別重寫父類別中的某一個方法
public void run(){
System.out.println(name+"游得很快");
}
class Demo8
{
public static void main(String[] args)
{
Dog d = new Dog();
d.name = "高加索";
d.run();
d.eat(); ;
Fish fish = new Fish();
fish.name = "鯨魚";
fish.run();
fish.eat();
}