個(gè)人筆記剥纷,僅供參考
1、概述
面向?qū)ο蟮娜筇匦灾凰才罚嵌鄳B(tài)的前提
主要解決的問題是共性抽取贷屎,用于抽取類之間相同的部分
子類可以擁有父類的內(nèi)容,也可以擁有自己的內(nèi)容
2艘虎、繼承的格式
父類就是普通的類
子類:
public class 子類的名稱 extends 父類名稱{
}
舉例
父類:
//定義一個(gè)父類唉侄,員工
public class Employee {
public void method(){
System.out.println("方法執(zhí)行");
}
}
子類:
public class Teacher extends Employee{
}
創(chuàng)建子類對(duì)象并使用繼承下來的方法
public class ExtendsDemo {
public static void main(String[] args) {
Teacher teacher = new Teacher();
//Teacher類當(dāng)中雖然什么都沒有,但是會(huì)繼承父類
teacher.method();
}
}
注意:子類也可以是父類
3野建、訪問成員變量的特點(diǎn)
沒重名的按正常的方法就好属划,子類和父類的成員變量重名了就需注意以下幾點(diǎn):
有兩種訪問方法:
1、直接通過子類對(duì)象訪問成員變量
? 等號(hào)左邊是誰候生,就優(yōu)先用誰同眯,沒有則向上找
2、間接通過成員方法使用成員變量
? 通過間接的成員方法訪問成員變量陶舞,該方法屬于誰就優(yōu)先用誰
三種重名同時(shí)出現(xiàn)
即局部變量嗽测,本類成員變量,父類成員變量同時(shí)重名肿孵,用一下方法區(qū)分
局部變量: 直接使用
本類成員變量:this.成員變量名
父類成員變量: super.成員變量名
4唠粥、成員方法的訪問
沒重名正常用即可
重名時(shí),創(chuàng)建的對(duì)象是誰停做,就優(yōu)先用誰晤愧,沒有則向上找
注意:無論成員方法還是成員變量,如果沒有蛉腌,都是向上找父類官份,不會(huì)向下找子類
5、方法的重寫
重寫概念(override):在繼承關(guān)系中烙丛,方法的名稱一樣舅巷,參數(shù)列表也一樣,也叫方法的覆蓋河咽,
特點(diǎn):創(chuàng)建的是子類對(duì)象钠右,則優(yōu)先用子類方法
注意:
? 1、必須保證父類子類之間的名稱相同忘蟹,參數(shù)列表也相同飒房「橥梗可以在方法前寫上@Override
用來判斷是否是有效重寫(報(bào)錯(cuò)就是無效重寫)
? 2、子類方法的返回值必須小于等于父類方法的返回值(范圍)
? 3狠毯、子類方法的權(quán)限护糖,必須大于等于父類方法的權(quán)限修飾符
public > protected > (default) > private
default是留空,什么都不寫
什么情況使用重寫:
方法的功能增加時(shí)嚼松,為了不影響使用父類嫡良,這時(shí)會(huì)使用重寫
6、構(gòu)造方法的訪問特點(diǎn)
父類和子類的構(gòu)造方法都會(huì)執(zhí)行惜颇,先執(zhí)行父類再執(zhí)行子類
注意:
? 1皆刺、子類構(gòu)造方法中有一個(gè)默認(rèn)隱含的super()
調(diào)用
? 2少辣、可以通過super關(guān)鍵字來使子類構(gòu)造調(diào)用父類重載構(gòu)造
? 3凌摄、super的父類構(gòu)造調(diào)用,必須是子類構(gòu)造方法的第一個(gè)語句
? 4漓帅、子類必須調(diào)用父類構(gòu)造方法锨亏,不寫則默認(rèn)用父類無參構(gòu)造
7、super關(guān)鍵字的三種用法
1忙干、在子類的成員方法中訪問父類的成員變量
public void methodZi(){
System.out.println(super.num);
//調(diào)用父類中的num
}
2器予、在子類的成員方法中,訪問父類的成員方法
super.mehod()
3捐迫、在子類的構(gòu)造方法中乾翔,訪問父類的構(gòu)造方法
super()
8、this關(guān)鍵字的三種用法
super用來訪問父類內(nèi)容施戴,而this關(guān)鍵字用來訪問本類內(nèi)容
1反浓、在本類的成員方法中,訪問本類的成員變量
2赞哗、在本類的成員方法中雷则,訪問本類的另一個(gè)成員方法
3、在本類的構(gòu)造方法中肪笋,訪問本類的另一個(gè)構(gòu)造方法
注意:第三種用法中this(...)
必須是構(gòu)造方法的第一個(gè)語句(唯一一個(gè))
public Zi(){
this(123);//本類的無參構(gòu)造月劈,調(diào)用本類的有參構(gòu)造
}
public Zi(int n){
}
9、java繼承的三個(gè)特點(diǎn)
1藤乙、JAVA語言是單繼承的(一個(gè)類的父類只有唯一一個(gè))
2猜揪、JAVA語言可以多級(jí)繼承,最頂級(jí)是java.lang.Object類
3坛梁、一個(gè)子類的直接父類是唯一的而姐,但一個(gè)父類可以用多個(gè)子類