JAVASE之抽象類與介面

2021-09-01 13:21:47 字數 1385 閱讀 3392

o 盡可能不要直接繼承直接實現好的類,而繼承抽象類或介面

o 物件多型性的核心本質:方法的覆寫

o 如果子類沒有進行指定方法的覆寫,也就不存在物件多型性了。

o 所以如果要對子類的方法做一些強制性的要求,就會用到抽象類。

1.抽象類的定義與使用

抽象類只是在普通類的基礎上擴充了一些抽象方法而已,所謂的抽象方法指的是只宣告而未實現的方法(即沒有方

法體)。所有抽象方法要求使用abstract關鍵字來定義,並且抽象方法所在的類也一定要使用abstract關鍵字來

定義,表示抽象類

例:

abstract class person

public void setname(string name)

// {}為方法體,所有抽象方法上不包含方法體

public abstract void getpersoninfo() ; //抽象方法

}

.

抽象類中包含有抽象方法,而抽象方法不包含方法體,即沒有具體實現。因此抽象類不能直接產生例項化物件。

** 對於抽象類的使用原則:

所有的抽象類必須有子類。

抽象類的子類必須覆寫抽象類的所有抽象方法(子類不是抽象 類)【方法覆寫一定要考慮許可權問題,許可權盡量都用public】。

抽象類的物件可以通過物件多型性利用子類為其實例化。

private與abstract不能同時使用。

範例:使用抽象類

abstract class person

public void setname(string name)

// {}為方法體,所有抽象方法上不包含方法體

public abstract void getpersoninfo() ; //抽象方法

}class student extends person

} public class test

}

.

2.抽象類的相關規定:

抽象類只是比普通類多了一些抽象方法而已

因此在抽象類中也允許提供構造方法,並且子類也照樣遵循物件例項化流程。例項化子類時一定先呼叫父類構造方法。

如果父類沒有無參構造,那麼子類構造必須使用super明確指出使用父類哪個構造

抽象類中允許不定義任何的抽象方法,但是此時抽象類依然無法直接建立例項化物件。

抽象類一定不能使用final宣告,因為使用final宣告的類不允許有子類;而抽象類必須有子類;相應的,抽象方法也不能使用private定義,因為抽象方法必須要能被覆寫。

抽象類也分為內部抽象類和外部抽象類。內部抽象類中也可以使用static定義來描述外部抽象類。

如果現在外部抽象類中使用了static那麼就是語法錯誤,但是內部抽象類允許使用static。

javase重新開始系列之抽象類與介面

當需求中只需要用到子類的例項和方法,父類的例項及方法是用不到的,這時使用抽象類限制父類的例項化,使用抽象方法優化 抽象是物件導向的一種重要方法 通過抽象我們能夠設計乙個更普通 更通用的類。關鍵字abstract 可用來修飾方法和類,表示 尚未實現 的含義。抽象類宣告格式 訪問許可權 abstract...

介面與抽象類區別之

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...

Java之抽象類與介面

1 abstract 用來描述抽象類和抽象方法 抽象類 用abstract描述的類 抽象方法 用abstract描述的方法,只有方法名,沒有具體的方法體 實現方式 1.1.抽象方法必須在抽象類中,抽象類中不一定有抽象方法 1.2.抽象類中可以有普通方法,有屬性宣告 1.3.抽象類不能直接被例項化 1...