更新時間:2020-11-11 17:55:33 來源:動力節點 瀏覽1976次
在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。換種方式闡述抽象類就是被abstract修飾的類,包含抽象方法的類就是抽象類,同樣的,使用abstrac關鍵字修飾的方法就是抽象方法。抽象類和抽象方法乍一看很簡單,但再仔細一看又有很多彎彎繞繞,容易誤入歧途。
下面我們就來帶大家繞開這些彎彎繞繞,直擊抽象類和抽象方法的核心內容,理清抽象類和抽象方法的關系:
一、抽象類
抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。簡而言之,抽象類就是被abstract修飾的類,包含抽象方法的類就是抽象類。
通過abstract方法定義規范,然后要求子類必須定義具體實現。通過抽象類,我們就可以做到嚴格限制子類的設計,使子類之間更加通用。(程序的可擴展和可維護性)。抽象類在Java語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是,一個類卻可以實現多個接口。
抽象類的特征:
1.抽象類不能實例化,即不能用new來實例化抽象類。
2.抽象類中包含有構造方法,但構造方法不能用來new實例,只能用來被子類調用。
3.抽象類中可以包含成員變量,成員方法,靜態方法,構造方法,final 修飾的方法,抽象方法
4. 抽象類只能用來被繼承。
二、抽象方法
使用abstract修飾的方法,沒有方法體,只有聲明。定義的是一種“規范”,就是告訴子類必須要給抽象方法提供具體的實現。抽象方法一般存在于抽象類或接口中。
抽象方法的特征:
1.抽象方法不允許有方法體,只能以分號“;”結尾
2.有抽象方法的類只能定義成抽象類(含有抽象方法的類必須是抽象類)
3.抽象類中可以包含 0 個或多個抽象方法
4.抽象方法必須被子類實現
5.如果子類不能實現父類中的抽象方法,那么子類也必須是抽象類
三、抽象類和抽象方法的基本用法(什么情況下使用抽象方法和抽象類 )
父類的名稱比較抽象,創建對象無意義。
/**
* 抽象類
*/
abstract class Animal {
abstract public void shout(); //抽象方法
public Animal(){
System.out.println("Animal類中的無參構造...");
}
}
class Dog extends Animal {
//子類必須實現父類的抽象方法,否則編譯錯誤
public void shout() {
System.out.println("汪汪汪!");
}
public Dog(){
super();//調用直接父類的無參構造,系統默認調用(可以省略)
System.out.println("Dog類中的無參構造...");
}
}
class Cat extends Animal {
public void shout() {
System.out.println("喵喵喵!");
}
}
/**
* 如果子類不能實現父類中的抽象方法,那么子類也必須是抽象類
*/
abstract class Pig extends Animal{
}
/**
* 測試抽象類
*/
public class TestAbstractClass {
public static void main(String[] args) {
// Animal a = new Animal();//編譯出錯,抽象類不能實例化
Animal a1 = new Dog();
a1.shout();
Animal a2 = new Cat();
a2.shout();
}
}
關于抽象類和抽象方法的講述就到這里,如果你能消化本文中的所有內容,那么理清抽象類和抽象方法的關系問題不大。如果你擋不住自己求知的腳步,請觀看本站的Java教程,超全面的Java知識將充實你的學習生活!
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習