013-關鍵字super

聲明:個人全部文章,都是對網上教學視頻的整理,包括狂神說、尚硅谷、黑馬程序員等等,用來做爲參考資料,無任何商業使用,請廣大網友參考,不喜勿噴,謝謝。(注意,因爲網站的緣由,有些代碼字符可能會出現問題,建議你們閱讀代碼時,最好和下面的圖片對應來看)
1、在Java類中使用super來調用父類中的指定操做
一、super可用於訪問父類中定義的屬性
二、super可用於調用父類中定義的成員方法
三、super可用於在子類構造器中調用父類的構造器
注意:
一、當子父類出現同名成員時,能夠用super代表調用的是父類中的成員
二、super的追溯不只限於直接父類
三、super和this的用法相像,this表明本類對象的引用,super表明父類的內存空間的標識
示例:








程序員

class Person {
protected String name = 「張三」;
protected int age;
public String getInfo() {
return 「Name:」 + name + 「\nage:」 + age;
}
}
class Student extends Person {
protected String name = 「李四」;
private String school = 「New Oriental」;
public String getSchool() {
return school;
}
public String getInfo() {
return super.getInfo() + 「\nschool:」 + school;
}
}
public class StudentTest {
public static void main(String[] args) {
Student st = new Student();
System.out.println(st.getInfo());
}
}





















ide

2、調用父類的構造器
一、子類中全部的構造器默認都會訪問父類中空參數的構造器
二、當父類中沒有空參數的構造器時,子類的構造器必須經過this(參數列表)或者super(參數列表)語句指定調用本類或者父類中相應的構造器。同時,只能」二選一」,且必須放在構造器的首行
三、若是子類構造器中既未顯式調用父類或本類的構造器,且父類中又沒有無參的構造器,則編譯出錯
示例:



網站

class Person {
private String name;
private int age;
private Date birthDate;


this

public Person(String name,int age,Date d) {
this.name = name;
this.age = age;
this.birthDate = d;
}
public Person(String name,int age) {
this(name,age,null);
}
public Person(String name,Date d) {
this(name,30,d);
}
public Person(String name) {
this(name,30);
}
}













視頻

public class Student extends Person {
private String school;
public Student(String name,int age,String s) {
super(name,age);
school = s;
}
public Student(String name,String s) {
super(name);
school = s;
}
//編譯出錯:no super(),系統將調用父類無參數的構造器
public Student(String s) {
school = s;
}
}













對象

3、this和super的區別
013-關鍵字super
blog

相關文章
相關標籤/搜索