您好,登錄后才能下訂單哦!
這篇文章主要講解了“有哪些java繼承特性”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“有哪些java繼承特性”吧!
什么是繼承
繼承是java對象面向?qū)ο蟮娜筇匦灾?,即子類繼承父類的特征和行為,從而使子類對象具備父類的相同的行為。比如說:現(xiàn)實生活中的動物,兔子和羊?qū)儆谑巢輨游镱悾{子和豹屬于食肉動物類,但食草動物和食肉動物又是屬于動物類,如下圖:
繼承的語法
class 父類 {
}
class 子類 extends 父類 {
}
繼承的特點(diǎn)
1. 繼承關(guān)鍵字extends ,實現(xiàn)了繼承之后,類與類之間產(chǎn)生了關(guān)系;
2. 繼承的本質(zhì)就是抽取共性代碼,多個重復(fù)代碼的向上抽取,簡化代碼;
3. 類是對一批對象的抽象,繼承是對一批類的抽象;
4. 父類又被稱為超類,或者基類,子類又被稱為派生類;
5. Java是面向?qū)ο笳Z言,萬事萬物皆是對象,為了滿足這個設(shè)計原則,所有的類都直接或者間接繼承自O(shè)bject類。
繼承的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1.簡化了代碼;
2.提高了擴(kuò)展性和可維護(hù)性;
缺點(diǎn):
耦合度搞,牽一發(fā)而動全身
繼承案例
介紹
開發(fā)動物類,其中動物分別為企鵝以及老鼠,要求如下:
企鵝:屬性(姓名,id),方法(吃,睡,自我介紹)
老鼠:屬性(姓名,id),方法(吃,睡,自我介紹)
通常情況下我們會這么寫:
首先定義一個企鵝類,然后是屬性,方法,然后是老鼠類,屬性方法,如下:
/**
*企鵝類
**/
public class Penguin {
private String name;
private int id;
public Penguin(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "號" + name + ".");
}
}
/**
*老鼠類
**/
public class Mouse {
private String name;
private int id;
public Mouse(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "號" + name + ".");
}
}
通過編碼發(fā)現(xiàn)代碼存在重復(fù)了,導(dǎo)致后果就是代碼量大且臃腫,而且維護(hù)性不高。那我們是不是可以用繼承的方案解決呢?請看下面代碼:
/**
*抽出公共部分定義父類
**/
public class Animal {
private String name;
private int id;
public Animal(String myName, int myid) {
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction() {
System.out.println("大家好!我是" + id + "號" + name + ".");
}
}
/**
*企鵝類繼承父類
**/
public class Penguin extends Animal {
public Penguin(String myName, int myid) {
super(myName, myid);
}
}
/**
*老鼠類繼承父類
**/
public class Mouse extends Animal {
public Mouse(String myName, int myid) {
super(myName, myid);
}
}
通過繼承,是不是簡化了代碼,提高了代碼的擴(kuò)展性和可維護(hù)性。
注意事項
了解繼承,知道l如何實現(xiàn),但還需注意以下幾點(diǎn):
1.
父類屬性方法使用private修飾,那么子類不能被繼承 ;
2. 只支持單一繼承,通俗點(diǎn)講就是一個子類只能有一個父類,但父類可以有多個子類;
3.支持多層繼承;
4. 當(dāng)子類和父類的成員變量重名的時候,子類優(yōu)先,即就近原則。
感謝各位的閱讀,以上就是“有哪些java繼承特性”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對有哪些java繼承特性這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。