18、繼承以及繼承中成員變數和成員方法的重名問題
繼承
繼承類別寫法:
定義父類格式:
public class 父類名稱{
//…
}
定義子類格式://extends 擴大;擴充套件
public class 子類名稱 extends 父類名稱{
//…
}
父類子類中訪問成員變數的規則:(父類子類中變數重名問題)
在父子類的繼承關係中,如果成員變數重名,則建立子類物件時,訪問有兩種方式:
-
直接通過子類物件訪問成員變數
規則:等號左邊時誰,就優先用誰,沒有則向上找 -
間接通過成員方法訪問成員變數
規則:該方法屬於誰,就優先用誰,沒有就向上找
區域性變數、本類的成員變數、父類的成員變數三者的重名問題
區域性變數:直接寫成員變數名
本類的成員變數:this.成員變數名
父類的成員變數名:super.成員變數名
//父類
public class Fu {
int num=20;//父類中的num
}
//子類
public class Zi extends Fu {
int num=10;//子類中的num
public void method(){
int num=30;//區域性變數num
System.out.println(num);//區域性30
System.out.println(this.num);//子類10
System.out.println(super.num);//父類20
}
}
成員方法的重名問題:
在父子類的繼承關係中,建立子類物件,訪問成員方法的規則:
- 建立物件是誰,就優先用誰,如果沒有就向上找。
- 無論是成員方法還是成員變數,如果沒有都是向上找父類,絕對不會向下找子類的。
public class Fu {
public void methodFu(){
System.out.println("父類方法執行");
}
public void method(){
System.out.println("父類重名方法執行");
}
}
public class Zi extends Fu{
public void methodZi(){
System.out.println("子類方法執行");
}
public void method(){
System.out.println("子類重名方法執行");
}
}
public class Demo {
public static void main(String[] args) {
Zi zi = new Zi();
zi.methodZi();//
zi.methodFu();//子類中沒有就上父類中找
zi.method();//子類重名方法執行,建立的是子物件,所以優先用子物件中的method()
}
}
相關文章
- Java繼承中成員變數的訪問特點「圖文分析」包含繼承中重名訪問的特點Java繼承變數
- 使用類繼承還是類的成員變數繼承變數
- Java基礎 成員變數的繼承與覆蓋Java變數繼承
- 類&成員可見性&繼承繼承
- #JAVA#物件導向(繼承中成員方法的關係)Java物件繼承
- Java繼承中成員方法的overload(過載/過載)Java繼承
- 繼承問題繼承
- c#繼承父子類成員間的互訪問性C#繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- delegate 繼承問題繼承
- oop類的繼承與類靜態成員學習OOP繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- python入門基礎(14)--類的屬性、成員方法、靜態方法以及繼承、過載Python繼承
- 模板類的繼承問題繼承
- 原型,繼承——原型繼承原型繼承
- 菱形繼承,虛繼承繼承
- 繼承關係裡的六個預設成員函式繼承函式
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- 『無為則無心』Python物件導向 — 55、多層繼承和繼承中的私有成員Python物件繼承
- 學習Java中遇到的繼承問題Java繼承
- 18-oop繼承OOP繼承
- 多繼承 與 多重繼承繼承
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承
- JavaScript中的繼承JavaScript繼承
- PostgreSQL中的繼承SQL繼承
- JS中的繼承JS繼承
- java中的繼承Java繼承
- java中繼承Java中繼繼承
- Scala多繼承以及AOP繼承
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- 公有繼承、私有繼承和保護繼承之間的對比繼承
- 類的繼承_子類繼承父類繼承
- 繼承繼承
- iOS 繼承&類方法iOS繼承
- prototype原型繼承的方法無法訪問函式的私有變數原型繼承函式變數
- C++ 成員函式的過載,繼承,覆蓋和隱藏C++函式繼承