Java——繼承
目錄
繼承中子類的特點(diǎn):可以有父類的內(nèi)容,還可有自己特有的內(nèi)容。
繼承的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
①提高了代碼的復(fù)用性(多個(gè)類相同的成員可以放到同一個(gè)類中);
②提高了代碼的維護(hù)性(若方法的代碼需修改,修改一處即可)。
缺點(diǎn):繼承讓類與類之間產(chǎn)生了關(guān)系,類的耦合性增強(qiáng),當(dāng)父類變化時(shí)子類也要跟著變化,削弱了子類的獨(dú)立性。
使用繼承的情況:兩個(gè)類A、B,滿足A是B的一種,或B是A的一種,則A和B存在繼承關(guān)系。
繼承中變量訪問(wèn)特點(diǎn)
/*測(cè)試類*/public class Demo {public static void main(String[] args){Son s = new Son();s.show();}}
/*父類*/public class Father {public int age = 40;}
/*子類*/public class Son extends Father {public int height = 170;public int age = 20;public void show(){int age = 30;System.out.println(age);System.out.println(height);}}
super關(guān)鍵字
| 關(guān)鍵字 | 訪問(wèn)成員變量 | 訪問(wèn)構(gòu)造方法 | 訪問(wèn)成員方法 |
| this | this.成員變量,訪問(wèn)本類成員變量 | this(…),訪問(wèn)本類構(gòu)造方法 | this.成員方法(…) |
| super | super.成員變量,訪問(wèn)父類成員變量 | super(…),訪問(wèn)父類構(gòu)造方法 | super.成員方法(…),訪問(wèn)父類成員方法 |
/*子類*/public class Son extends Father {public int age = 20;public void show(){int age = 30;System.out.println(age);//訪問(wèn)本類的成員變量ageSystem.out.println(this.age);//訪問(wèn)父類的成員變量ageSystem.out.println(super.age);}}
繼承中構(gòu)造方法訪問(wèn)特點(diǎn)
/*父類*/public class Father {public Father() {System.out.println("父類中無(wú)參構(gòu)造方法被調(diào)用");}public Father(int age) {System.out.println("父類中帶參構(gòu)造方法被調(diào)用");}}
/*子類*/public class Son extends Father {public Son(){//super();super(20);System.out.println("子類中無(wú)參構(gòu)造方法被調(diào)用");}public Son(int age){//super();super(20);System.out.println("子類中帶參構(gòu)造方法被調(diào)用");}}
/*測(cè)試類*/public class Demo {public static void main(String[] args){Son s = new Son();Son s2 = new Son(20);}}
繼承中成員方法訪問(wèn)特點(diǎn)
/*父類*/public class Father {public void show(){System.out.println("父類中show方法被調(diào)用");}}
/*子類*/public class Son extends Father {public void method(){System.out.println("子類中method方法被調(diào)用");}public void show(){super.show();System.out.println("子類中show方法被調(diào)用");}}
/*測(cè)試類*/public class Demo {public static void main(String[] args){Son s = new Son();s.method();s.show();//s.text();//不存在該方法,報(bào)錯(cuò)}}
方法重寫
/*手機(jī)類*/public class Phone {public void call(String name){System.out.println("給"+name+"打電話");}}
/*新手機(jī)類*/public class NewPhone extends Phone {public void call(String name){System.out.println("開啟視頻");super.call(name);}}
/*測(cè)試類*/public class PhoneDemo {public static void main(String[] args){Phone p = new Phone();p.call("zhangsan");NewPhone np = new NewPhone();np.call("lisi");}}
私有方法不能重寫(父類私有成員子類不能繼承)
子類方法全新啊不能更低(public > 默認(rèn) > 私有)
/*父類*/public class Father {private void show(){System.out.println("父類中show方法被調(diào)用");}public void method(){System.out.println("父類中method方法被調(diào)用");}}
/*子類*/public class Son extends Father {/*//私有方法不能重寫(父類私有成員子類不能繼承)@Overrideprivate void show(){super.show();System.out.println("子類中show方法被調(diào)用");}*///子類方法全新啊不能更低(public > 默認(rèn) > 私有)void method(){System.out.println("子類中method方法被調(diào)用");}}
繼承的注意事項(xiàng)
Java中類只支持單繼承,不支持多繼承
Java中類支持多層繼承
/*母親類*/public calss Mother {public void dance(){System.out.println("母親類");}}
/*爺爺類*/public class Granddad {public void drink(){System.out.println("爺爺類");}}
/*父親類*/public class Father extends Granddad {public void cook(){System.out.println("父親類");}}

評(píng)論
圖片
表情





