JAVA面對對象(三)——Super、static、final關鍵字。本站提示廣大學習愛好者:(JAVA面對對象(三)——Super、static、final關鍵字)文章只能為提供參考,不一定能成為您想要的結果。以下是JAVA面對對象(三)——Super、static、final關鍵字正文
使用super關鍵字可以直接調用父類中的構造方法、屬性、普通方法
super調用父類構造方法的操作,與this調用構造方法一樣,語句必須放在子類構造方法的首行
public class Person { //定義父類Person private String name; //定義name屬性 private int age; //定義age屬性 public Person(String name,int age) { //通過構造方法設置name、age this.setName(name); //設置name屬性內容 this.setAge(age); //設置age屬性內容 } public String getName() { //取得name屬性 return name; } public void setName(String name) { //設置name屬性 this.name = name; } public int getAge() { //取得age值 return age; } public void setAge(int age) { //設置age值 this.age = age; } public String getInfo(){ //信息輸出 return "姓名:"+this.getName()+"; 年齡:"+this.getAge(); } } public class Student extends Person{ private String school; //定義新屬性school public Student(String name, int age, String school) { super(name, age); //調用父類中的構造方法 this.school = school; } public String getSchool() { //取得school屬性 return school; } public void setSchool(String school) { //設置school屬性 this.school = school; } @Override public String getInfo() { //覆寫父類中的方法 return super.getInfo()+" ;學校:"+this.getSchool(); //擴充父類方法 } } public class Demo { public static void main(String[] args) { Student stu = new Student("李四", 25, "北京大學"); System.out.println(stu.getInfo()); //調用覆寫過得方法打印輸出 } }
運行結果:
姓名:李四; 年齡:25 ;學校:北京大學
從上面的程序中可以看出子類中使用super()方法調用了父類中含有兩個參數的構造方法,然後再覆寫了父類中的getInfo()方法,最後輸出內容是被子類覆寫過的內容;
super和this十分類似,都可以調用構造方法、屬性、普通方法。但是也有區別:
序號 區別點 this super 1 屬性訪問 訪問本類中的屬性,如果本類中沒有則從父類中查找 訪問父類中的屬性 2 方法 訪問本類中的方法,如果本類中沒有則從父類中查找 直接訪問父類中的方法 3 調用構造 調用本類構造,必須放在構造方法首行 調用父類構造,必須放在子類構造方法首行 4 特殊 表示當前對象 無概念既然都可以調用構造方法,那麼this和super不可以同時出現,因為都要放在構造方法首行。另外,無論子類如何操作,最終先調用父類中的構造方法
static
static表示“全局”或者“靜態”的意思,用來修飾成員變量或成員方法;被static修飾的成員變量和成員方法獨立於該類的任何對象,也就說他不依賴於任何實例的對象,當該類被創建時它們也被創建;因此static對象可以在他的任何對象創建之前訪問,無需引用任何對象
static修飾的成員變量或成員方法習慣上稱作靜態變量或靜態方法可以直接通過類名來訪問,訪問語法為:
類名.靜態方法名(參數列表)
類名.靜態變量名
final
final表示的意思是最終,可以使用final關鍵字聲明類、屬性、方法
使用final聲明變量時,要求全部字母大寫