什么是繼承關(guān)系:
從面向?qū)ο蟮慕嵌壬险f(shuō):繼承是一種從一般到特殊的關(guān)系巩步,是一種“is a”的關(guān)系虱饿,即子類(lèi)是對(duì)父類(lèi)的拓展哩俭,是一種特殊的父類(lèi)绷跑,比如:狗是動(dòng)物的一種特殊情況,狗屬于動(dòng)物凡资。
如何表示繼承
在Java語(yǔ)言中,存在多個(gè)類(lèi)的時(shí)候,我們使用extends
關(guān)鍵字來(lái)表示子類(lèi)和父類(lèi)之間的關(guān)系.
- 語(yǔ)法格式: 在定義子類(lèi)的時(shí)候來(lái)表明自己需要拓展于哪一個(gè)父類(lèi).
public class 子類(lèi)類(lèi)名 extends 父類(lèi)類(lèi)名
{
//編寫(xiě)自己特有的狀態(tài)和行為
}
- Object類(lèi)是Java語(yǔ)言的根類(lèi)(老祖宗,任何類(lèi)都是Object的子類(lèi).)
class Person{} 等價(jià)于 class Person extends Object{}
Object類(lèi)要么是一個(gè)類(lèi)直接父類(lèi),要么是一個(gè)類(lèi)間接父類(lèi). - 注意:
在Java中,類(lèi)和類(lèi)之間的繼承關(guān)系只允許單繼承,不允許多繼承.
也就是說(shuō)一個(gè)類(lèi)A,只能有一個(gè)直接的父類(lèi),不能出現(xiàn)類(lèi)A同時(shí)繼承于
類(lèi)B和類(lèi)C. - 繼承關(guān)系的作用:
1.解決了代碼的重復(fù)問(wèn)題.
2.真正的作用,表示出一個(gè)體系.
繼承了什么
子類(lèi)繼承父類(lèi)之后,子類(lèi)到底繼承了父類(lèi)的哪些成員呢?
可以根據(jù)訪問(wèn)修飾符來(lái)判斷:
- 父類(lèi)中的成員使用public修飾,子類(lèi)繼承.
- 父類(lèi)中的成員使用protected修飾,即使父類(lèi)和子類(lèi)不在同一個(gè)包中.子類(lèi)也繼承.
- 如果父類(lèi)和子類(lèi)在同一個(gè)包中,此時(shí)子類(lèi)可有繼承父類(lèi)中缺省修飾符的成員.
- 父類(lèi)中的成員使用private修飾,子類(lèi)繼承不到.因?yàn)閜rivate只能在本類(lèi)中訪問(wèn).
- 父類(lèi)的構(gòu)造器,子類(lèi)也不能繼承,因?yàn)闃?gòu)造器必須和當(dāng)前的類(lèi)名相同.