Java中的abstract方法和abstract類

                       Java中的abstract方法和abstract類

abstract修飾符用來修飾類和成員方法


1:用abstract修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被實例化。
2:用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統具有什麼功能,但不提供具體的實現。
abstract 規則:
1:抽象類可以沒有抽象方法,但是有抽象方法的類必須定義爲抽象類,如果一個子類繼承一個抽象類,子類沒有實現父類的所有抽象方法,那麼子類也要定義爲抽象類,否則的話編譯會出錯的。
2:抽象類沒有構造方法,也沒有抽象靜態方法。但是可以有非抽象的構造方法
3:抽象類不能被實例化,但是可以創建一個引用變量,類型是一個抽象類,並讓它引用非抽象類的子類的一個實例
4:不能用final 修飾符修飾

Code:

/*
抽象類:
 
目前存在的問bai題:
    1. 動物類的durun方法描述的不正確zhi。
    2. 沒有強制要子類一定要重寫run方法。
 
抽象類的應用場景:
    我們在描述一類事物的時候,發現該種事物確實存在着某種行爲,
但是這種行爲目前是不具體的,那麼我們可以抽取這種行爲 的聲明,但是
不去實現該種行爲,這時候這種行爲我們稱作爲抽象的行爲,我們就需要使用抽象類。
 
抽象類的好處: 強制要求子類一定要實現指定的方dao法。
 
 
抽象類要注意的細節:
    1. 如果一個函數沒有方法體,那麼該函數必須要使用abstract修飾,把該函數修飾成抽象 的函數。。
    2. 如果一個類出現了抽象的函數,那麼該類也必須 使用abstract修飾。
    3. 如果一個非抽象類繼承了抽象類,那麼必須要把抽象類的所有抽象方法全部實現。
    4. 抽象類可以存在非抽象方法,也可以存在抽象的方法.
    5. 抽象類可以不存在抽象方法的。 
    5. 抽象類是不能創建對象的。
        疑問:爲什麼抽象類不能創建對象呢?
        因爲抽象類是存在抽象方法的,如果能讓抽象類創建對象的話,那麼使用抽象的對象
        調用抽象方法是沒有任何意義的。
    6. 抽象類是存在構造函數的,其構造函數是提供給子類創建對象的時候初始化父類的屬性的。
 
 
 
*/
//動物類--->抽象類
abstract class Animal{
     
    String name;
 
    String  color;
 
    public Animal(String  name,String color){
        this.name = name;
        this.color = color;
    }
     
 
    //非抽象的方法
    public void eat(){
        System.out.println(name+"喫糧食");
    }
 
    //移動...
    public abstract void run();
}
 
 
 
//狗 是屬於動物中一種 
class Dog extends Animal{
 
    public Dog(String name,String color){
        super(name,color);
    }
 
    public void run(){
        System.out.println(name+"四條腿跑得很快...");
    }
}
 
 
//魚 是屬於動物中一種
class Fish extends Animal{
 
 
    public Fish(String name,String color){
        super(name,color);
    }
 
 
    public void run(){
        System.out.println(name+"搖搖尾巴游啊遊!");
    }
}
 
 
class Demo3 {
 
    public static void main(String[] args) 
    {
        /*
        Dog d = new Dog("牧羊犬","棕色");
        d.run();
 
        //創建一個魚對象
        Fish f  = new Fish("錦鯉","金黃色");
        f.run();
        */
 
        Animal a = new Animal();
 
    }
}

參考:https://blog.csdn.net/dlwh_123/article/details/41309187?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.nonecase

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