抽象類 abstract關鍵字
阿新 • • 發佈:2018-08-04
pac 抽象類 line 實例化 功能 code 需要 bubuko 兩種
}
關鍵字 :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關鍵字