Java中super 關鍵字是什么?用來干什么?


super 關鍵字

含義

super : 超級的
含義: 在Java中代表當前對象的 直接父類對象的引用

用法分類

super.
super(實際參數)

1、super(實際參數)

super():代表調⽤⽗類⽆參的構造
super(參數):調⽤⽗類有參的構造

作用: 在⼦類構造⽅法中調⽤⽗類的構造⽅法

特點:
1.如果⼦類構造⽅法中的第⼀⾏沒有this()或者this(參數),也不是super(參數) 默認是
super(),構造⽅法的第⼀⾏不是this(...)就是super(...)
2.super()和super(參數)只能在構造⽅法的第⼀⾏

注意: super()和super(參數)只能⽤在⼦類的構造⽅法中

案例: 
package com.ujiuye.day09;

public class Demo10 {
    public static void main(String[] args) {
        //Sub sub = new Sub();
       Sub sub = new Sub(10,20);

       // 在定義一個類的時候 如果已經定義了有參構造 在開發中一般要將無參數的構造方法補出來
    }
}



// 定義一個父類
class Super{
    int a;
    int b;

    //將構造
    public Super(){
        System.out.println("我是父類無參數的構造方法");
    }
    public Super(int a, int b) {
        System.out.println("我是父類有參數的構造方法");
        this.a = a;
        this.b = b;
    }


}

//定義一個子類
class Sub extends  Super{
    int c;
    int d;
    //構造方法
    public Sub(){
        super(11,22);
        System.out.println("我是子類的無參數的構造方法");
    }

    public Sub(int c, int d) {
        super(11,22);
        System.out.println("我是子類的有參數的構造方法");
        this.c = c;
        this.d = d;
    }

}


案例2: 
package com.ujiuye.day09;

public class Demo10 {
    public static void main(String[] args) {
        //Sub sub = new Sub();
       Sub sub = new Sub(10,20);

       // 在定義一個類的時候 如果已經定義了有參構造 在開發中一般要將無參數的構造方法補出來
    }
}



// 定義一個父類
class Super{
    int a;
    int b;

    //將構造
    public Super(){
        System.out.println("我是父類無參數的構造方法");
    }
    public Super(int a, int b) {
        System.out.println("我是父類有參數的構造方法");
        this.a = a;
        this.b = b;
    }


}

//定義一個子類
class Sub extends  Super{
    int c;
    int d;
    //構造方法
    public Sub(){
        super();
        System.out.println("我是子類的無參數的構造方法");
    }

    public Sub(int c, int d) {
        this();
        System.out.println("我是子類的有參數的構造方法");
        this.c = c;
        this.d = d;
    }

}

案例3: 
package com.ujiuye.day09;

public class Demo10 {
    public static void main(String[] args) {
        //Sub sub = new Sub();
       Sub sub = new Sub(10,20);

       // 在定義一個類的時候 如果已經定義了有參構造 在開發中一般要將無參數的構造方法補出來
    }
}

class YeYe{
    public YeYe(){
        System.out.println("我是yeye的構造方法");
    }
}

// 定義一個父類
class Super extends YeYe{
    int a;
    int b;

    //將構造
    public Super(){
        super();
        System.out.println("我是父類無參數的構造方法");
    }
    public Super(int a, int b) {
        System.out.println("我是父類有參數的構造方法");
        this.a = a;
        this.b = b;
    }


}

//定義一個子類
class Sub extends  Super{
    int c;
    int d;
    //構造方法
    public Sub(){
        super();
        System.out.println("我是子類的無參數的構造方法");
    }

    public Sub(int c, int d) {
        this();
        System.out.println("我是子類的有參數的構造方法");
        this.c = c;
        this.d = d;
    }

}

2、super .

作用: 區分 直接父類中和子類中重名的成員(成員變量和成員方法)

案例: 
package com.ujiuye.day09;

public class Demo10 {
    public static void main(String[] args) {
        Sub sub = new Sub();
        sub.m();
    }
}

class YeYe{
    int b = 1;
}

// 定義一個父類
class Super extends YeYe{
    int b = 10;

    public int m1(){
       return  super.b;
    }
}

//定義一個子類
class Sub extends  Super{// sub中有3個 b 成員變量
   int b = 20;

   public void m(){
       int b = 30;
       //System.out.println(b);
       //System.out.println(this.b);
       System.out.println(super.b);//super 指代 當前子類的直接父類對象的引用
       System.out.println(super.b);
       int i = m1();
       System.out.println(i);
   }
}

案例2: 
package com.ujiuye.day09;

public class Demo10 {
    public static void main(String[] args) {
        Sub sub = new Sub();
        sub.m2();
    }
}


// 定義一個父類
class Super{
    public void m1(){
        System.out.println("我是父類中的m1方法");
    }
}

//定義一個子類
class Sub extends  Super{// sub中有3個 b 成員變量

    @Override
    public void m1(){
        System.out.println("我是子類重寫父類的m1方法");
    }

    public void m2(){
       //this.m1();//this.m1()
        super.m1();
    }

}

總結

super: 當前類的直接父類對象的引用

	1、super(實際參數):在子類的構造方法中 調用父類的構造方法
		注意: 
			1. 只能用在構造方法中
			2. 只能是構造方法的第一條有效語句
			3. 如果一個構造方法的第一行不是 this() / this(實參) / super(實參),默認是super()
	2、super. : 當子類中存在和父類同名的成員變量,需要使用super 指定父類的重名的成員變量.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM