Java--例項化

curry库-04049發表於2024-08-10

目錄
  • 五種方法
  • 構造器
        • 定義
        • 特點
        • 作用
        • 構造方法種this的使用

五種方法

無論哪一種方式必須經過的一步---呼叫構造方法。無論怎樣建構函式作為初始化類的意義怎樣都不會改變。

  • new語句建立物件,最常用建立物件的方法

  • 工廠方法返回物件,如:String str = String.valueOf();

  • 反射,呼叫java.lang.Calss或者java.lang.reflect.Constructor類的newInstance()的例項方法如:Objectobj=Class.forName("java.lang.Object").newInstance();

  • 呼叫物件的clone()方法。

  • 透過I/O流(包括反序列化),如運用反序列化手段,呼叫java.io.ObjectInputStream物件的 readObject()方法

構造器

定義

構造方法又叫做構造器與建構函式,(我們在idea中通常可以用快捷鍵Alt+Insert選擇Constructor)

特點

構造方法與類名相同,沒有返回值,連void都不能寫

可以過載

如果一個類中沒有構造方法,那麼編譯器會為類加上一個預設的構造方法 public 類名(){ }

如果手動新增了構造器,那麼預設構造器就會消失

作用

構造方法在建立物件時呼叫,具體呼叫哪一個由引數決定。

構造方法的作用是為正在建立的物件的成員變數賦初值。

public class Test {

public static void main(String[] args) {
    
    //呼叫無參構造器
    Student s1 = new Student();
    //呼叫有參構造器
    Student s2 = new Student(15);
    System.out.println(s2.age);
    Student s3 = new Student(34, "小明");
    System.out.println(s3.name + ":" + s3.age);
  }
}
構造方法種this的使用

構造方法種可以使用this,表示剛剛建立的物件

構造方法種this可用於

  this訪問物件屬性

  this訪問例項方法

  this在構造方法中呼叫過載的其他構造方法(要避免陷入死迴圈)

    只能位於第一行

    不會觸發新物件的建立

public class Student {

public String name;
public int age;

public void eat() {
    System.out.println("eat....");
}
//構造器
//使用this()呼叫過載構造器不能同時相互呼叫,避免陷入死迴圈
public Student() {
    //this()必須出現在構造器的第一行,不會建立新的物件
    this(15);//呼叫了具有int型別引數的構造器
    System.out.println("預設構造器");
}
public Student(int a) {
    this.eat();
    eat();//this.可以省略
}
//this在構造器中表示剛剛建立的物件
public Student(int a, String s) {
    System.out.println("兩個引數的構造器");
    this.age = a;
    this.name = s;
   }
}
public class Test {

    public static void main(String[] args) {
        Student s1 = new Student(15, "小明");
        System.out.println(s1.name + ":" + s1.age);
        Student s2 = new Student(12, "小紅");
        System.out.println(s2.name + ":" + s2.age);
        
        Student s3 = new Student();
    }
}

相關文章