1. 程式人生 > >抽象類 abstract關鍵字

抽象類 abstract關鍵字

pac 抽象類 line 實例化 功能 code 需要 bubuko 兩種

格式:public abstrace class 類名{

}

關鍵字 :abstract

抽象類和普通類的區別是什麽?

抽象類是不能被實例化的 也就是不能使用new關鍵字,普通類是可以實例化的。

例如:

 abstract class GrandPa{
    public void farm() {System.out.println("grandpa 的農場");}
    public void makeMoney() {System.out.println("grandpa賺錢");}
    public abstract void goToCollege() ;
}

這時候new 一個GrandPa的對象就會出錯。

技術分享圖片

如果一個類有抽象方法,那這個類必然是抽象類,反之 抽象類不一定有抽象方法。

定義一個抽象類的用途在哪裏?

抽象的概念是不需要實際去做的,但是在實際應用中有兩種場景用途:

1、父類某一個功能或者方法,需要子類強行去重寫的。那麽該方法必須是抽象的。

2、父類對於某一個方法,無法預知子類會怎麽實現,那麽該方法必須是抽象的。

例如:你的爺爺經營了一個農場,賺了錢,唯一一點是沒有考上大學,之後你爺爺定義了一個方法,強行讓你父親去執行

 abstract class Father extends GrandPa{
     
    public void goToCollege() 
    {
        System.out.println(
"Father 完成了父類的方法"); } public abstract void driverCar(); }

父親完成了,考上大學了,則父親成為基類(普通類),如果父親未完成,也就是沒有重寫爺爺的goToCollege方法,那麽父親仍是抽象類

假設父親考上大學了,卻沒有買車,定義driverCar方法讓你去實現,那麽你也得重寫父親的driverCar方法,否則你也成為抽象類。

class Son extends Father {
     public void driverCar() {
         System.out.println("Son 實現了Father的方法");
     }
 }

總代碼

package com.qf.bigdata.test;

public  class ConceptCar {
    //define  定義
    public static void main(String[] args) {
        
        Son son=new Son();
        son.farm();
        son.makeMoney();
        son.goToCollege();
        son.driverCar();
    }

}
 abstract class GrandPa{
    public void farm() {System.out.println("grandpa 的農場");}
    public void makeMoney() {System.out.println("grandpa賺錢");}
    public abstract void goToCollege() ;
}
 abstract class Father extends GrandPa{
     
    public void goToCollege() 
    {
        System.out.println("Father 完成了父類的方法");
    }
    public abstract void driverCar();
}

 class Son extends Father {
     public void driverCar() {
         System.out.println("Son 實現了Father的方法");
     }
 }
 
 
 
 

看一下結果

技術分享圖片

再說一次抽象類的用途

定義一個抽象類的用途在哪裏?

抽象的概念是不需要實際去做的,但是在實際應用中有兩種場景用途:

1、父類某一個功能或者方法,需要子類強行去重寫的。那麽該方法必須是抽象的。

2、父類對於某一個方法,無法預知子類會怎麽實現,那麽該方法必須是抽象的。

抽象類 abstract關鍵字