Java面向物件和類
阿新 • • 發佈:2020-07-14
類和物件
最簡單的類: 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);//呼叫本類的一個形參的建構函式。