1. 程式人生 > 其它 >面向物件02-類與物件

面向物件02-類與物件

面向物件的基本元素

類(Class):對一類事物的描述,是抽象的,概念上的定義
物件(Object):實際存在的該類事物的每個個體,因而也稱為例項(instance)

  • 對類進行設計,就是對類的成員的設計

類及類的成員

屬性 : 對應類中的成員變數

  • 屬性(Field) = 成員變數 = 域 = 欄位

行為 : 對應類中的成員方法

  • 方法(Method) = 成員方法 = 函式

類與物件的使用

一. 建立類:設計類的成員

//類的設計
class Person {
    //屬性
    String name;
    int age = 1;
    boolean isMale;

    //方法
    public void eat() {
        System.out.println("人可以吃飯");
    }

    public void sleep() {
        System.out.println("人可以睡覺");
    }

    public void talk(String language) {
        System.out.println("人可以說話,使用的是" + language);
    }
}

二. 建立類的物件:類的例項化

  • 如果建立了一個類的多個物件,則每個物件都獨立的擁有一套類

    意味著:如果我們修改一個物件的屬性a,則不影響另外一個物件屬性a的值

三. 通過“物件.屬性”或“物件.方法”呼叫物件的結構

//測試類 
public class PersonTest {
    public static void main(String[] args) {
        //類的例項化:建立Person類的物件
        Person p1 = new Person();
        //呼叫物件的結構:屬性和方法
        //呼叫屬性:“物件.屬性”
        p1.name = "Tom";
        p1.isMale = true;
        System.out.println(p1.name);
        System.out.println(p1.isMale);
        //呼叫方法:“物件.方法”
        p1.eat();
        p1.sleep();
        p1.talk("Chinese");
    }
}

**其他. **

   public static void main(String[] args) {
       //將p1變數儲存的物件地址值賦給p3,導致p1和p3指向了堆空間中的同一個物件實體
        Person p3 = new Person();
        System.out.println(p3.name);//結果為Tom
        p3.age = 10;
        System.out.println(p1.age);//10
   }

物件的記憶體解析

  • 堆(Heap)

    存放物件例項(所有的物件例項以及陣列都要在堆上分配)

  • 棧(Stack)

    儲存區域性變數(存放各種 基本資料型別 物件引用,不等同於物件本身,是物件在堆中存放的首地址

    )

  • 方法區(Method Area)

    儲存被虛擬機器載入的類資訊、常量、靜態變數、即時編譯器編譯後的程式碼等