類是抽象模板,定義屬性(字段)與行為(方法);對象是具體實例,佔用堆內存存儲屬性值。
public class Dog {
String name;
int age;
public Dog() { System.out.println("無參構造"); }
public Dog(String name, int age) {
this.name = name; this.age = age;
System.out.println("有參構造");
}
void bark() { System.out.println("汪汪"); }
}
Dog myDog; — 棧內存分配引用變量。new Dog() — 堆內存分配對象,返回地址。Dog myDog = new Dog("花花", 3); // 完成上述三步
myDog.bark(); // 通過引用調用方法
this(name, age) 調用本類其他構造,必須置於首行。this.field 區分同名參數;this.method() 調用實例方法。
引用變量在棧,對象實體在堆,通過地址關聯。方法調用棧幀存局部變量與引用,方法結束棧幀彈出,對象若無引用則待 GC 回收。
Dog d = new Dog("旺財", 2);
System.out.println(d.name); // 訪問屬性
d.bark(); // 訪問方法