關鍵字--super


關鍵字super

     在Java類中使用super來調用父類中的指定:

  • super可用於訪問父類中定義的屬性
  • super可用於調用的父類中定義的成員方法
  • super可用於在子類構造方法中調用父類的構造器

注意:

  • 尤其當子父類出現同名成員時,可以用super進行區分
  • super的追溯不僅限於直接父類(super不僅可以調用父類,還可調用父類的父類)
  • super和this的用法很相像,this代表本類對象的引用,super代表父類的內存空間的表示
public class kk extends Kids{
    public void text(){
        super.salary = 1;//salary為kids的父類ManKind中的成員變量
        super.yearsOld = 100;//yearsOld為Kid的成員變量
        super.employeed();//可以用super追溯父類的成員方法
        super.manOrWorman();//可以使用super向上追溯父類的父類的成員方法
    }
}
public class Kids extends ManKind {
    public int yearsOld;

    public int getYearsOld() {
        return yearsOld;
    }

}
public class ManKind {
    public int sex;
    public int salary;

    public void manOrWorman(){
        
    }
    public void employeed(){
       
    }

}

public class kid extends man {

    public void show(){
        super.showInfo();
    }

    public static void main(String[] args) {
        kid k = new kid();
        k.show();
    }
}
public class man {
    String name = "sa";
    int age =10;

    public void showInfo(){
        System.out.println("name"+name+"age"+age);
    }
}

調用父類的構造器

  • 子類中所有的構造器默認都會訪問父類中空參數的構造器
public class man {
    String name = "sa";
    int age =10;

    public man(){//顯式無參構造
        System.out.println("mankind");
    }

//    public void showInfo(){
//        System.out.println("name"+name+"age"+age);
//    }
}

public class kid extends man {

//    public void show(){
//        super.showInfo();
//    }

    public static void main(String[] args) {
        kid k = new kid();//new kid()是在調用kid類的默認無參構造方法,在這個過程中就會使用父類的無參構造

    }
}

//相當於下面
public class man {
    String name = "sa";
    int age =10;

    public man(){//顯式無參構造
        System.out.println("mankind");
    }

//    public void showInfo(){
//        System.out.println("name"+name+"age"+age);
//    }
}

public class kid extends man {
      
      public kid(){
          super();
      }

//    public void show(){
//        super.showInfo();
//    }

    public static void main(String[] args) {
        kid k = new kid();//new kid()是在調用kid類的默認無參構造方法,在這個過程中就會使用父類的無參構造

    }
}

  • 當父類中滅有空參數的構造器時,子類的構造器必須通過this(參數列表)或者super(參數列表)語句指定調用本類或者父類中相應的構造器,且必須放在構造器的第一行
  • 如果子類構造器中既沒有顯示調用父類或者本類的構造器,切父類中又沒有無參的構造器,則編譯出錯

 


免責聲明!

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



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