1. 程式人生 > 實用技巧 >封裝,繼承,Super和重寫

封裝,繼承,Super和重寫

java中只有單繼承,沒有多繼承

package com.lol.LiOu.oop.Demo04;

//在java中,所有的類,都預設直接或者間接連結整合object
//preson  人
public class Person {

        
    //public 共有的
    //protected 受保護的
    //default   預設的
    //private 私有的
    public void  say() {
        System.out.println("說了一句話");
    }
    public int money = 10_0000_0000;

    }
//ctrl+h顯示父子類關係

私有(private)的東西無法被繼承

super注意點:

1.super呼叫父類的構造方法,必須在構造方法的第一個

2.super必須只能出現在子類的方法或者構造方法中!

3.super 和this不能同時呼叫構造方法!

VS

this:代表的物件不同:

this:本身呼叫者這個物件

super:代表父類物件的應用

前提:this:沒有繼承也可以使用

​ super:只能在繼承條件才可以使用

構造方法:

this();本類的構造

super(); 父類的構造!

重寫:需要有繼承關係,子類重寫父類的方法!

​ 1.方法名必須相同

​ 2.引數列表必須相同

​ 3.修飾符:範圍可以擴大但不能縮小 public >protected>private

​ 4.丟擲的異常:範圍,可以被縮小但不能被擴大:ClassNotFoundException 不能--> Exception(大)

重寫,子類的方法和父類必須一致,方法體不同

為什麼要重寫?

1.父類的功能子類不一定需要或者不一定滿足!

Alt+Insert:override;

![螢幕截圖 2020-12-12 152256](C:\Users\LOL\Desktop\螢幕截圖 2020-12-12 152256.png)![螢幕截圖 2020-12-12 152424](C:\Users\LOL\Desktop\螢幕截圖 2020-12-12 152424.png)![螢幕截圖 2020-12-12 200609](C:\Users\LOL\Desktop\螢幕截圖 2020-12-12 200609.png)

呼叫方法

package com.lol.LiOu.oop;

import com.lol.LiOu.oop.Demo04.A;
import com.lol.LiOu.oop.Demo04.B;

public class App {
    //靜態方法和非靜態方法區別很大
    public static void main(String[] args) {

    //費靜態:重寫
    A a = new A();
    a.test();

    //父類的引用指向了子類
        B b = new A();//子類重寫了父類的方法
        b.test();
    }
}

子類

package com.lol.LiOu.oop.Demo04;

public class A extends B{

    //Override重寫
    @Override//註釋
    public void test() {
        System.out.println("A=>test()");
    }
}

父類

package com.lol.LiOu.oop.Demo04;

//重寫都是方法的重寫,與屬性無關
public class B {
    public  void test(){
        System.out.println("B=>test()");
    }

}