1. 程式人生 > 實用技巧 >Java面向物件和類

Java面向物件和類

類和物件

最簡單的類: class A{};//沒有任何屬性和行為


物件: A obj=new A();


類是定義,是規範,是“死”的東西。類似於水果這個概念,實際上並不存在。


物件是例項,是類的一個實現,是一個具體的東西。


A obj1=new A(); A obj2=new A();

以上有兩個物件,它們的型別都是A,但是這是兩個不同的物件,在記憶體中有不同的存放地址。因此,沒有兩個物件是完全一樣的。

  • A obj=new A();
  • obj可以看做記憶體中一個物件(包括若干個資料的控制代碼)。
  • 在C/C++中obj稱為指標,在Java中稱為Reference(引用)。
  • 物件賦值是Reference賦值,而基本型別是直接值拷貝。
  • 產生一個物件,A obj=new A();

-%99是用new關鍵字,還有%1是用克隆和反射生成。

  • new出物件後,內部屬性值預設是?

short 0; int 0; long 0;

boolen false;

char '\u0000';(備註:其實就是一個空字元)

byte 0;

float 0.0f;

double 0.0d;

  • 函式內部的區域性變數,編譯器不會給預設值,需要初始化後才可以使用;類的成員變數,編譯器會給預設值,可直接使用。

建構函式

如何在變數產生時就給成員變數賦值呢?


答案就在建構函式內

public class A{
    int id;
    public A(int id2)
    {
        id=id2;
    }
}

A obj=new A(10);


Java建構函式的名稱必須和類名相同,且沒有返回值。

Java有建構函式,但是沒有解構函式。

每個變數都是有生命週期的,它只能儲存在離它最近的一對{}中。

Java具有自動回收機制,當變數退出其生命週期後,JVM會自動回收所分配的物件的記憶體。所以不需要解構函式來釋放記憶體。

資訊隱藏和this

資訊隱藏

面向物件有一個法則---資訊隱藏

  • 類的成員屬性,是私有的private。

  • 類的方法是公有的public,通過方法修改成員屬性的值。

this

  • this負責指向本類中的成員變數。

  • this負責指向本類中的成員方法

this.add(5,3);//呼叫本類的add方法,this可忽略。

  • this可代替本類的建構函式。

this(5);//呼叫本類的一個形參的建構函式。