您好,登錄后才能下訂單哦!
這篇“Java繼承怎么定義和重寫”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java繼承怎么定義和重寫”文章吧。
當多個類存在相同的屬性和方法時,可以選擇講這些共同的部分抽象為一個父類,其他的子類就可以繼承父類的屬性和行為,使得子類對象獲得和父類對象同樣的屬性和方法。
繼承的優點
(1)提高代碼的復用性。
(2)類與類之間產生了聯系,是多態的前提。
通過 extends 關鍵字,可以聲明一個子類繼承了一個父類,定義格式:
public class 父類名稱{//定義父類的格式
..........
}
public class 子類名稱 extends 父類名稱{
...........//定義子類格式
}
在父子類繼承關系中,如果成員變量重名了,則創建子類對象,有兩種訪問方式:
(1)直接通過子類對象訪問成員變量。
等號左邊是誰,就優先用誰,沒有則向上找。
(2)間接通過成員方法訪問成員變量。
成員方法屬于誰,就優先用誰,沒有則向上找。
public class Demo02ExtendsField {
public static void main(String[] args) {
Father father = new Father();//創建父類對象
System.out.println(father.numFather);
System.out.println("====================");
Son son = new Son();
System.out.println(son.numFather);//10
System.out.println(son.numSon);
System.out.println("====================");
System.out.println(son.num );//優先子類200
System.out.println("===================");
son.methodSon();//這個方法定義在子類,優先用子類,沒有再向上找
son.methodFather(); //這個方法在父類中定義的
}
}
public class Father {
int numFather = 10;
int num = 100;
public void methodFather(){
System.out.println(num);
}
}
public class Son extends Father{
int numSon = 20;
int num = 200;
public void methodSon(){
System.out.println(num);
}
}
注:也可以通過 super 關鍵字來訪問父類中的同名變量;this 關鍵用來訪問本類中的同名變量。
如果父子類中都出現了重名的成員方法,一般使用重寫(Override)來進行訪問。
方法重寫:如果子類出現和父類中一模一樣的成員方法(返回類型、方法名和參數列表完全相同),就會出現覆蓋效果,也就是重寫。即聲明不變,重新實現。
重寫特點:創建的是誰,就優先用誰的方法;只會向上找父類,而不會向下去找子類。
public class Demo04ExtendsMethod {
public static void main(String[] args) {
Son son = new Son();
son.methodFather();
son.methodSon();
System.out.println("===========");
son.method();
}
}
public class Father {
public void methodFather(){
System.out.println("父類方法執行!");
}
public void method(){
System.out.println("父類方法重名執行!");
}
}
public class Son extends Father {
public void methodSon(){
System.out.println("子類方法執行!");
}
@Override
public void method(){
System.out.println("子類方法重名執行!");
}
}
方法重寫的注意事項:
(1)必須保證父子類之間方法的方法名和參數列表一致。
(2)子類返回數據類型必須小于父類的返回數據類型。
(3)子類方法的權限必須大等于父類的權限修飾符。
(4)方法復寫前加一個 @Override
是用來檢測是否為有效的重寫。但這個不是必須的,可寫可不寫。
擴展:
(1)Object 類是所有類的公共最高父類(祖宗類)。
(2)public > protected > (deafult) > private 【(default)不是關鍵字,而表示權限修飾符留空。】
public class Demo06Phone {
public static void main(String[] args) {
Phone phone = new Phone();
phone.call();
phone.send();
phone.show();
System.out.println("==========");
NewPhone newPhone = new NewPhone();
newPhone.call();
newPhone.send();
newPhone.show();
System.out.println("==========");
}
}
public class Phone {
public void call(){
System.out.println("打電話");
}
public void send(){
System.out.println("發短信");
}
public void show(){
System.out.println("顯示號碼");
}
}
public class NewPhone extends Phone {
@Override
public void show() {
super.show();
System.out.println("顯示姓名");
System.out.println("顯示頭像");
}
}
以上就是關于“Java繼承怎么定義和重寫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。