1. 程式人生 > >Java學習(構造方法、this關鍵字、super應用)

Java學習(構造方法、this關鍵字、super應用)

() stub 存在 如果 重載 形式 修飾符 nbsp auto

構 造 方 法

定義:對象創建時使用的方法,即在new一個新對象時,對應構造方法,直接對屬性賦值。

語句格式: 修飾符(public 等) 構造方法名(必須跟當前類名一樣,否則報錯)(參數列表){

}

構造方法的體現:

(1)構造方法沒有返回值類型,也不需要返回值。因為它是為成員變量賦值,賦值結束,方法隨之執行結束。

(2)構造方法名稱必須與類名保持一致

(3)構造方法沒有具體的返回值

默認構造方法與細節:

默認構造方法:如果沒有顯示指定構造方法,編譯會在編譯時自動添加默認的構造方法,如果已經指定了構造方法,則不會再添加默認構造方法。

細節:

(1)一個類中可以有多個構造方法,多個重載方法是以重載的形式存在

的。

(2)構造方法是可以被private修飾的,作用是其他類無法創建此方法的對象。

this關鍵詞

構造方法之間的調用,可以通過this關鍵詞來完成

構造方法調用格式

this(參數列表);

成員變量和局部變量同名問題

當在方法中出現了成員變量和局部變量重名的情況時,可以在成員變量前添加this.關鍵詞來區分。

Super關鍵字

子父類中構造方法的調用:

在創建子類對象時,父類的構造方法會先執行,因為子類中所有構造方法的第一行有默認的隱式super();語句

格式:

調用本類中的構造方法
this(實參列表);
調用父類中的空參數構造方法
super();
調用父類中的有參數構造方法
super(實參列表);

當父類中沒有空參數構造方法時,子類的構造方法必須有顯示的super語句,指定要訪問的父類有參數構造方法。

子類對象創建過程的細節:

(1)只要是構造方法,第一行都有默認的super();

(2)Java中,定義了一個所有類的父類:opject

註意:

類中的構造方法默認第一行都有隱式的super()語句,在訪問父類中的空參數構造方法。所以父類的構造方法既可以給自己的對象初始化也可以自己的子類對象初始化

如果默認的隱式super()語句在父類中沒有對應的構造方法,那麽必須在構造方法中通過this或者super的形式明確要調用的構造方法。

實例:

package
com.oracel.demo01; public class Person { private int id; private String name; private int age; //系統會默認提供一個空參構造,當自己添加時會取消,若測試類中需要,需要自己手動添加 public Person(){ } //可以存在多個構造方法,以重載的形式存在
public Person(int id){
this.id=id;
}
public Person(int id,String name,int age){ this(id); //使用this關鍵詞,調用構造方法this.name=name; //接收參數,並且賦值 this.age=age;  //使用this.關鍵詞 來區分成員變量和局部變量 } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean compare(Person p){ return this.age==p.age; } }

測試類:

package com.oracel.demo01;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //構造函數只能在創建對象(new)的時候賦值一次 
        //構造方法是給成員變量初始化的,但系統還是先賦默認值,然後再傳參
          Person p=new Person(1,"寒武",18);
          System.out.println(p.getId()+"..."+p.getName()+"..."+p.getAge());
    }
}

Java學習(構造方法、this關鍵字、super應用)