JAVA基礎(46)---構造方法和匿名方法
構造方法
構造方法的特點
- 構造方法沒有返回值,連void也不寫
- 構造方法的方法名必須和類名完全一致;
- 當我們沒有去顯式的宣告構造方法的時候,Java預設會為每一個類,提供一個無參的構造方法。一旦我們提供了任何一個構造方法,那麼Java就不在提供預設的無參構造方法。
基於第三個特點,我們一般在寫一個類的時候,如果要寫構造方法,自己最好將這個無參的構造方法也手動的寫出來。
訪問修飾符 類名稱(【形參列表】){
}
構造方法的作用
- 建立物件
- 完成物件的初始化
構造方法在何時使用
建立物件時有jvm自動去呼叫
構造方法的過載
是在程式執行階段,有Jvm去判斷呼叫哪一個過載的方法。
【
編譯階段:檢查是否存在語法錯誤,並將 .java
執行階段:才會將生成的 .class 檔案載入進記憶體中,才會去真正的執行我們的程式傳遞引數,匹配要執行的方法。
】
對物件的初始化
- 在物件建立好之後,進行初始化;
- 在建立物件的時候,利用構造方法完成物件的初始化
- 可以利用程式碼塊來完成物件的初始化。
程式碼塊
隨著建立物件而執行構造程式碼塊
無論你執行的是有參構造還是無參構造,構造程式碼塊都會執行,而且先於構造方法執行
如果使用的是無參構造,那麼物件的屬性值就是構造程式碼塊中所賦的值
如果使用的是有參構造,那麼有參構造中傳入的屬性值,會覆蓋掉構造程式碼塊中的對應的屬性的值
例如:{
this.name = "張三";
this.age = 20
} //這就是一個程式碼塊
匿名物件
一個物件在建立的時候沒有名稱。匿名物件只能使用一次
例:new String("abc")
public class Person{
public Person(){//這就是一個構造方法
System.out.println("建立了一個person物件");
}
public Person(String name){
this.name = name;
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
{
this.name="趙六";
this.age = 22;
}
//屬性
private String name;
private int age;
//方法
public void setName(String name){
this.name = name;
System.out.println(name);
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
public static void main(String[] args){
Person p = new Person();
p.setName("張三");
System.out.println(p.getName());
Person p1 = new Person();
p1.setName("張三");
System.out.println(p1.getName());
Person p2 = new Person("李四");
System.out.println(p2.getName());
Person p3 = new Person("王五",22);
System.out.println(p3.getName() +"---"+p3.getAge());
Person p4 = new Person();
System.out.println(p4.getName() +"---"+p4.getAge());
System.out.println(new String("abcd").length());
}
}
使用this呼叫本類的構造方法的時候,必須出現在方法的第一行