<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
眾所周知,我們Java語言是一種物件導向的程式語言,每當我們提到Java的特性,大家一定會在腦海裡浮現出Java中的繼承、多型以及封裝。 我們在日常的開發中經常會用到這三種特性,本文首先給大家介紹這三大特性之一——繼承。
繼承是物件導向三大特徵之一,可以使得子類具有父類別的屬性和方法,還可以在子類中重新定義,以及追加屬性和方法。
class 子類 extends 父類別 { }
class Dog extends Animal { }
我們為了讓大家更好的掌握其格式,現在給出一個簡單的案例加以說明:
public class Fu { public void show() { System.out.println("show方法被呼叫"); } } public class Zi extends Fu { public void method() { System.out.println("method方法被呼叫"); } } public class Demo { public static void main(String[] args) { //建立物件,呼叫方法 Fu f = new Fu(); f.show(); Zi z = new Zi(); z.method(); z.show(); } }
該案例執行的結果如下:
在子類方法中存取一個變數,採用的是就近原則。
我們還是以上面的案例加以說明:
class Fu { int num = 10; } class Zi { int num = 20; public void show(){ int num = 30; System.out.println(num); } } public class Demo1 { public static void main(String[] args) { Zi z = new Zi(); z.show(); // 輸出show方法中的區域性變數30 } }
具體該案例執行的結果如下:
注意:子類中所有的構造方法預設都會存取父類別中無參的構造方法
子類會繼承父類別中的資料,可能還會使用父類別的資料。所以,子類初始化之前,一定要先完成父類別資料的初始化,原因在於,每一個子類構造方法的第一條語句預設都是:super()
問題:如果父類別中沒有無參構造方法,只有帶參構造方法,該怎麼辦呢?
過使用super關鍵字去顯示的呼叫父類別的帶參構造方法
父類別中自己提供一個無參構造方法
推薦方案:
自己給出無參構造方法
通過子類物件存取一個方法
我們仍是通過前面的案例加以說明這個問題:
public class Fu { private void show() { System.out.println("Fu中show()方法被呼叫"); } void method() { System.out.println("Fu中method()方法被呼叫"); } } public class Zi extends Fu { /* 編譯【出錯】,子類不能重寫父類別私有的方法*/ @Override private void show() { System.out.println("Zi中show()方法被呼叫"); } /* 編譯【出錯】,子類重寫父類別方法的時候,存取許可權需要大於等於父類別 */ @Override private void method() { System.out.println("Zi中method()方法被呼叫"); } /* 編譯【通過】,子類重寫父類別方法的時候,存取許可權需要大於等於父類別 */ @Override public void method() { System.out.println("Zi中method()方法被呼叫"); } }
與我們給出的註釋是一致的;因此在我們日常的程式設計中一定要注意。
class A extends B, C { }
為了讓大家更好的理解該知識點,我們給出以下的程式碼:
public class Granddad { public void drink() { System.out.println("爺爺愛喝酒"); } } public class Father extends Granddad { public void smoke() { System.out.println("爸爸愛抽菸"); } } public class Mother { public void dance() { System.out.println("媽媽愛跳舞"); } } public class Son extends Father { // 此時,Son類中就同時擁有drink方法以及smoke方法 }
- 需求:定義老師類和學生類,然後寫程式碼測試;最後找到老師類和學生類當中的共性內容,抽取出一個父類別,用繼承的方式改寫程式碼,並進行測試
- 根據其需求我們給出以下的思路:
①定義老師類(姓名,年齡,教書())
②定義學生類(姓名,年齡,學習())
③定義測試類,寫程式碼測試
④共性抽取父類別,定義人類(姓名,年齡)
⑤定義老師類,繼承人類,並給出自己特有方法:教書()
⑥定義學生類,繼承人類,並給出自己特有方法:學習()
⑦定義測試類,寫程式碼測試
我們通過以上的需求以及思路實現如下的程式碼:
package inheritExample; class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Teacher extends Person { public Teacher() {} public Teacher(String name,int age) { super(name,age); } public void teach() { System.out.println("用心去撰寫每一篇部落格"); } } class Student extends Person{ public Student() {} public Student(String name, int age) { super(name,age); } public void study(){ System.out.println("讀者閱讀"); } } class PersonDemo { public static void main(String[] args){ //建立老師類物件並進行測試 Teacher t = new Teacher(); t.setName("一計之長"); t.setAge(28); System.out.println(t.getName() + "," + t.getAge()); t.teach(); // 建立學生類物件測試 Student s1 = new Student("readA",18); System.out.println(s1.getName() + "," + s1.getAge()); s1.study(); Student s2 = new Student("readB",23); System.out.println(s2.getName() + "," + s2.getAge()); s2.study(); } }
具體執行的結果如下:
本文主要是詳細給大家介紹了java中的三大特性中的繼承,包括繼承的概念、繼承的實現以及優缺點,另外還介紹了繼承中成員存取特點,接著給大家介紹了super和this這兩個關鍵字的相關知識,最後給大家介紹了方法的重寫以及在使用繼承中需要注意的事項。與此同時,我們在介紹相關知識的同時給出了相應的案例幫助大家更好的理解相應的知識點。
到此這篇關於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