中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java繼承怎么定義和重寫

發布時間:2022-02-24 10:39:43 來源:億速云 閱讀:157 作者:iii 欄目:開發技術

這篇“Java繼承怎么定義和重寫”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java繼承怎么定義和重寫”文章吧。

1、繼承的定義

當多個類存在相同的屬性和方法時,可以選擇講這些共同的部分抽象為一個父類,其他的子類就可以繼承父類的屬性和行為,使得子類對象獲得和父類對象同樣的屬性和方法。

繼承的優點

(1)提高代碼的復用性。

(2)類與類之間產生了聯系,是多態的前提。

2、繼承的格式

通過 extends 關鍵字,可以聲明一個子類繼承了一個父類,定義格式:

public class 父類名稱{//定義父類的格式
..........
}

public class 子類名稱 extends 父類名稱{
...........//定義子類格式
}

3、成員變量重名

在父子類繼承關系中,如果成員變量重名了,則創建子類對象,有兩種訪問方式:

(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 關鍵用來訪問本類中的同名變量。

4、成員方法重名

如果父子類中都出現了重名的成員方法,一般使用重寫(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)不是關鍵字,而表示權限修飾符留空。】

5、重寫的應用場景

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繼承怎么定義和重寫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙阴县| 江陵县| 罗源县| 左贡县| 晋宁县| 赫章县| 安福县| 徐汇区| 丁青县| 闽清县| 湟中县| 白城市| 邮箱| 宣城市| 彩票| 沽源县| 宁强县| 大安市| 兴义市| 皮山县| 嘉善县| 博白县| 揭阳市| 白水县| 勃利县| 安康市| 黔西县| 鹤山市| 罗源县| 东丽区| 习水县| 平武县| 青岛市| 肃南| 武陟县| 榆林市| 河池市| 孟津县| 南开区| 远安县| 鲁甸县|