<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前面我也們講述了相關封裝的,現在我們先認識的繼承的概念和使用。
繼承在顯示生活中也不少見,比如繼承財產之類的,在我們java學習中也有類似的使用,
繼承者稱作子類也叫派生類,被繼承者稱作父類別、基礎類別或超類,objec類是所有類的父類別
(後期介紹)
好處:就是提高了程式碼的維護性(多個程式碼需要修改,只需要修該一處即可)。
提高了程式碼的複用性(多個相同的成員可以方法到同一個類中)
弊端:繼承的缺點就是使程式碼之間的耦合度高,修改父類別子類也會跟著變化
兩個有從屬關係的,比如貓和動物,學生和人等。
繼承的關鍵詞是extends。
public class 子類名 extends 父類別名{}
舉例:
public class Cat extends Animal{}//貓繼承動物類
子類可以擁有父類別的非私有方法和成員變數,也可以重寫父類別的非私有(private修飾的)方法。所有子類的方法都預設存取父類別的無參構造
重寫是子類重述父類別中的非私有方法,重寫的一般特點是方法名相同,格式相同,返回型別相同、方法體不同
如:
fu類中:
public class fu{ public void play(){ System.out.println("fu喜歡打羽毛球"); } }
zi類中:
public class zi extends fu{ public void play(){//對父類別的方法重寫 System.out.println("zi喜歡打籃球"); } }
還可以這麼寫,存取許可權需要zi類大於等於fu類
fu類中修飾是預設:
public class fu{ void eat(){ System.out.println("fu中eat方法"); } }
zi類中:
public class Zi extends Fu { @Override//檢測方法重寫的正確性 public void eat() { System.out.println("zi中的eat方法"); } }
zi類中重寫:
public class Zi extends Fu { // @Override寫不寫不會影響,這個只是起到輔助作用 void eat() { System.out.println("zi中的eat方法"); } }
zi還可以:
public class Zi extends Fu { @Override protected void eat() { System.out.println("zi中的eat方法"); } }
修飾存取關係:public>protected>預設(不寫)>private
當父類別的許可權修飾符是預設(也就是不寫修飾符),子類重寫的修飾方法可以是預設和
預設之前的以此類推。注:當父類別的許可權修飾符是private時,那子類可不是private
之前的。當父類別被private修飾時,子類不能重寫此類方法。
當子類中的成員變數和父類別中成員變數同名時,我們想使用父類別中的成員變數時,
或者我們重寫了父類別中方法時,我們還想呼叫父類別中的方法時。此時我們就要使用super
關鍵字來呼叫父類別中的成員。
super和this的使用原理差不多,this是解決了區域性變數和成員變數同名時,區域性變數對
成員的覆蓋super是解決子類對父類別的覆蓋。
當區域性變數,成員變數,父類別中的變數同名時,存取的是區域性變數。可以用this和super改變。
public class fu{ public int age=40; public fu(){}//無參構造 public fu(int age){//帶參構造 this.age=age;} public void eat(){ System.out.println("fu中eat方法"); } } public class Zi extends Fu { public int age=18; public Zi(){} public Zi(int age){ this.age=age;} public void eat() { super.eat(); System.out.println("zi中的eat方法"); } public void show(){ int age=1; System.out.println(age);//1區域性變數的值 System.out.println(this.age);//18子類成員中的值 System.out.println(super.age);//40父類別中的值 } public class Demo{ public static void main(String[] args){ zi z=new zi(); z.eat(); z.show(); } }
下篇我們繼續!!
到此這篇關於Java 物件導向之繼承篇詳解原理與特點的文章就介紹到這了,更多相關Java 繼承內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45