子類和父類中定義了一模一樣的方法
在類中的構造和一般的方法中在沒有繼承關係時都有乙個預設的this (用於找到當前的物件),在建立了繼承關係後,在子類中有乙個super :指向父類的引用(標誌這兩個類之間的關係)
找方法也和變數一樣先在物件中找,,沒有再去父類中找
class fu
}class zi extends fu
}public class extendsbasic
}
執行結果:
zi is running! //執行結果是子類中的方法執行
這種情叫重寫(複寫 方法覆蓋)
常見情況
1.當父類和子類有一致函式,應該遵從,子類繼承父類,父類已經具備這個功能那麼子類就已經繼承這個功能了
2.當子類繼承父類的這個功能但具體的執行卻和父類不太一樣(要對這個功能進行更改)————方法覆蓋
override(重寫 複寫 方法覆蓋)
是函式的另乙個特性(乙個特性為過載 overload)
例子:描述手機——
class phone
void show()
}
對來電顯示功能進行優化,不僅現實**號碼,還要顯示姓名,**
一般不會直接修改原始**——原始**類與類之間,程式之間關係複雜,直接修改原始**可能會牽一髮而動全身因此解決辦法————對原始**進行擴充套件(繼承),在子類中改寫相應功能
class phone
void show()
}class newphone extends phone
對原始**進行擴充套件(繼承),在子類中改寫相應功能
1.函式名與父類一致,如果還需要父類方法就用super,不需要就直接定義在這個功能中的執行
重寫的注意事項
1.子類覆蓋父類,必須要保證前者的的許可權(public private 預設)必須要大於或者等於後者
私有不放在覆蓋範圍之內
(關於關鍵字:public private 為許可權修飾符只限制訪問,不改變儲存/static 會改變儲存)
2.靜態覆蓋靜態
3.寫法要一摸一樣:返回值 函式名 引數列表
注意:在子類中使用父類中的方法(與父類一模一樣/不重寫)
函式()
super.函式名();
這樣過呼叫的函式是完全呼叫的父類中的執行
java 繼承中的 成員變數
之前看到了 這麼一段 子類中 出現了 和父類 成員同名的 成員變數後的取值問題 如下 class superclass public superclass int number public int getnumber class subclass1 extends superclass class...
java 繼承中成員變數和方法的問題
public class t1 public void test2 public class t2extends t1 public static void main string args 首先明確 子類定義了和父類相同的變數,不會覆蓋變數值,也就是說,各是各的。t1 test new t2 這是...
繼承中的非虛成員函式
都是在公共繼承的前提下。類成員函式包括常用的兩種。非虛函式和虛函式。非虛函式是靜態繫結,虛函式是動態繫結。繼承中的非虛函式 一般不用,都是在迷糊中錯用 這種情況下,呼叫哪個函式與指標型別有關,如果指標型別是子類型別,則呼叫子類的函式,如果是父類的型別呼叫父類的函式 1,類d會不會自己複製乙個和類a一...