繼承後的特點——成員方法
繼承後的特點——構造方法
物件訪問成員變數時,會先在子類中查詢有沒有定義對應的變數,若子類中存在就會就近使用子類中的變數,若子類中沒有定義就會沿著繼承關係往上找有沒有定義相應的變數,若父類中也沒有則編譯不通過。**示例:
class
fuclass
ziextendsfu}
public
class
extendsdemo0
}演示結果:
num2=
7num=
6
子父類**現了同名的成員變數時,在子類中訪問父類中非私有成員變數,需要使用super
關鍵字,用法類似於this
。
使用格式:
super
.父類成員變數名
**如下:
class
ziextendsfu}
演示結果:
fu num =
7zi num =
5
fu 類中的私有成員變數,子類是不能直接訪問的。編碼時,遵循封裝的原則,使用private修飾成員變數,可以在父類中提供公共的get***方法和set***方法來訪問。在每次建立子類物件時,先初始化父類空間,再建立其子類物件本身。目的在於子類物件中包含了其對應的父類空間,便可以包含其父類的成員。**體現在子類的構造方法呼叫時,一定先呼叫父類的構造方法。理解**如下:
this.成員變數 – 本類的
super.成員變數 – 父類的
this.成員方法名() – 本類的
super.成員方法名() – 父類的
**示例:
class
animal
}class
catextends
animal
public
void
eattest()
}public
class
extendsdemo08
}輸出結果為:
animal : eat
cat : eat
animal : eat
注意:
通過super引用屬性、方法、構造器時,都要求該成員是可見的,即該成員的修飾符不能是private的,跨包的話還不能是預設的。
super的追溯不僅限於直接父類
如果某個屬性或方法前面使用「this.」,那麼先從本類中查詢,如果未找到,會沿著繼承關係往上找
如果某個屬性或方法前面使用「super.」,那麼先從直接父類中查詢,如果未找到,會沿著繼承關係往上找
如果某個屬性或方法前面既沒有「this.」,也沒有「super.」,遵循就近原則,先從本類中查詢,如果未找到,會沿著繼承關係往上找
如果子、父類中的方法不重名,這時的呼叫是沒有影響的。物件呼叫方法時,會先在子類中查詢有沒有定義對應的方法,若子類中存在就執行子類中定義的方法,若子類中沒有定義就會沿著繼承關係往上找有沒有定義相應的方法,若父類中也沒有則編譯不通過。**示例:
classfu}
class
ziextendsfu}
public
class
extendsdemo04
}
如果子、父類**現重名的成員方法,這時的訪問是一種特殊情況,叫做方法重寫(override)。
**如下:
classfu}
class
ziextendsfu}
public
class
extendsdemo05
}
子類可以根據需要,定義特定於自己的行為。既沿襲了父類的功能名稱,又根據子類的需要重新實現父類方法,從而進行擴充套件增強。比如新的手機增加來電顯示頭像的功能,**如下:
class
phone
public
void
call()
public
void
shownum()
}//智慧型手機類
class
newphone
extends
phone
}public
class
extendsdemo06
}
重寫時,用到super.父類成員方法,表示呼叫父類的成員方法。方法名:必須完全一致
形參列表:必須完全一致
返回值型別:
如果是基本資料型別和void,必須一致
如果是引用資料型別,重寫的方法的返回值型別<=被重寫方法的返回值型別,student修飾符:重寫的方法的修飾符範圍>=被重寫方法的修飾符範圍(public > protected > 預設 > private)
被重寫方法不能被private
、static
、final
修飾,如果跨包的話,修飾符預設的也不能被重寫,因為預設的跨包不可見
首先我們要回憶兩個事情,構造方法的定義格式和作用:
構造方法的名字是與類名一致的。所以子類是無法繼承父類構造方法的。
構造方法的作用是初始化成員變數的。所以子類的初始化過程中,必須先執行父類的初始化動作。
**示例:
class
father
}class
sonextends
father
public
son(string str)
public
son(string str,
int num)
}public
class
constructortest
}
多型成員的訪問特點
多型 同乙個物件 事物 在不同時刻體現出來的不同狀態。舉例 貓是貓,貓是動物。水 液體,固體,氣態 多型的前提 a 要有繼承關係。b 要有方法重寫。其實沒有也是可以的,但是如果沒有這個就沒有意義。動物 d new 貓 d.show 動物 d new 狗 d.show c 要有父類引用指向子類物件。父...
多型成員訪問的特點
parent p new child 成員變數 編譯看左邊 基類 執行看左邊 基類 無論如何都是訪問基類的成員變數。成員方法 編譯看左邊 基類 執行看右邊 派生類 動態繫結。static方法 編譯看左邊 基類 執行看左邊 基類 只有非靜態的成員方法,編譯看左邊,執行看右邊。這樣,我們也可以得出多型的...
繼承中構造方法的訪問特點
package cn.ly.day.seven.seventeen3 public class fupublicfu int num package cn.ly.day.seven.seventeen3 public class ziextends fupublic void method pack...