1. 程式人生 > >JAVA基礎(46)---構造方法和匿名方法

JAVA基礎(46)---構造方法和匿名方法

構造方法

構造方法的特點

  1. 構造方法沒有返回值,連void也不寫
  2. 構造方法的方法名必須和類名完全一致;
  3. 當我們沒有去顯式的宣告構造方法的時候,Java預設會為每一個類,提供一個無參的構造方法。一旦我們提供了任何一個構造方法,那麼Java就不在提供預設的無參構造方法。

基於第三個特點,我們一般在寫一個類的時候,如果要寫構造方法,自己最好將這個無參的構造方法也手動的寫出來。  
                                                             訪問修飾符 類名稱(【形參列表】){
        
                                                               }

構造方法的作用

  1. 建立物件
  2. 完成物件的初始化

構造方法在何時使用

                                  建立物件時有jvm自動去呼叫

構造方法的過載

                              是在程式執行階段,有Jvm去判斷呼叫哪一個過載的方法。
                               【
                                    編譯階段:檢查是否存在語法錯誤,並將 .java

檔案,編譯成 .class檔案,生成位元組碼檔案
                                    執行階段:才會將生成的 .class 檔案載入進記憶體中,才會去真正的執行我們的程式傳遞引數,匹配要執行的方法。            
                                】

對物件的初始化

  1. 在物件建立好之後,進行初始化;
  2. 在建立物件的時候,利用構造方法完成物件的初始化
  3. 可以利用程式碼塊來完成物件的初始化。

程式碼塊

         隨著建立物件而執行構造程式碼塊

        無論你執行的是有參構造還是無參構造,構造程式碼塊都會執行,而且先於構造方法執行
        如果使用的是無參構造,那麼物件的屬性值就是構造程式碼塊中所賦的值
        如果使用的是有參構造,那麼有參構造中傳入的屬性值,會覆蓋掉構造程式碼塊中的對應的屬性的值

                                                   例如:{

                                                                    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呼叫本類的構造方法的時候,必須出現在方法的第一行