如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。簡單來說就是類中的資訊太少了描述不了乙個具體的」東西「,這就是抽象類。
抽象類不能例項化,但類的其它功能依舊存在,成員變數、成員方法和構造方法的訪問方式和普通類一樣。
1.用abstract修飾的類就是抽象類。
2.若某個類中包含有抽象方法,那麼該類就必須定義成抽象類。
3.抽象方法
抽象方法是一種特殊的方法:它只有宣告,沒有具體的實現;
抽象方法必須使用abstract關鍵字進行修飾。
4.抽象類可以有成員屬性和非抽象的成員方法。
5.抽象類不能有被例項化,但可以有建構函式,因為抽象類中含有無具體實現的方法,所以不能用抽象類建立物件。
6.抽象類只能用作基類,表示一種繼承關係。繼承抽象類的非抽象類必須實現其中的所有非抽象方法,對於已經實現的的方法的引數、返回值必須要和抽象類中的方法一致。否則,該類也必須宣告為抽象類。
7.構造方法和靜態方法不可以修飾為abstract。
使用關鍵字abstract定義抽象類,一般語法為:
/*
[訪問許可權] abstract class 類名
*/public
abstract
class
shapes
public
abstract
class
shapes
}
**示例-----抽象類
/*
* 乙個類中有方法是抽象方法,這個類也會變成乙個抽象類
* 乙個抽象類會有 0-n 個抽象方法
*/public
abstract
class
person
/* * 在乙個類中,會有一類方法,子類對這種方法永遠都不滿意,會對這種方法進行重寫;
* 把乙個方法的方法體去掉,然後被abstract修飾,那麼這個方法就變成了乙個抽象方法;*/
public
abstract
void
say();
public
abstract
void
love()
;}
**示例—繼承抽象類的子類
/*
* 抽象類被其它類繼承
* 抽象類被繼承後必須對其中的抽象方法進行重寫,否則就需要被abstract修飾為抽象類
* 但是一般子類不會加abstract修飾
* 乙個類繼承乙個抽象類,那麼這個類會變成乙個抽象類**/
public
class
chinese
extends
person
@override
public
void
love()
}
**示例----測試
public
class
test
}
需要注意的幾個問題:
1.抽象類不能建立,那麼抽象類中是否有構造器?
答:抽象類中有構造器。構造器的作用:給子類初始化物件時需要先用super呼叫父類的構造器。
2.抽象類是否能夠被final修飾?
答:不能被final修飾,因為抽象類設計的初衷就是給子類繼承重寫用的,如果被final修飾了,就不能被子類繼承了,那抹抽象類的意義就沒有了。
物件導向之抽象類
abstract 關鍵字,用於修飾方法和類 抽象方法 不同類的方法是相似,但是具體內容又不太一樣,所以我們只能抽取他的宣告,沒有具體的方法體,沒有具體方法體的方法就是抽象方法 抽象類 有抽象方法的類必須是抽象類 如果乙個類中有抽象方法,那麼這個類必須是抽象類 抽象類和抽象方法必須被abstract修...
物件導向之抽象類
為了引出抽象類我們先來這樣乙個例子 package cn.edu.xatuii public class person public void setname string name public void eat food f public string getname class chicken...
物件導向 抽象類
抽象 裡邊有未明確的東西。抽象類的特點 1 抽象方法一定在抽象類中。2 抽象方法和抽象類都必須被abstract關鍵字修飾。3 抽象類不可以用new建立物件,因為呼叫抽象方法沒意義。4 抽象類中的抽象方法要被使用,必須由子類複寫其所有的抽象方法後,建立子類物件呼叫。如果子類只覆蓋部分抽象方法,那麼該...