類的定義及使用 一,類的定義 二,記憶體分析 類是引用類型,創建時會申請分配記憶體 堆記憶體:保存每一個對象的屬性,需要new關鍵字才可以創建 棧記憶體:保存一塊堆記憶體的地址 1,當使用Book bk = new Book();時,記憶體情況如下: 為屬性賦值之後,如下 2.分步創建對象,實例化 Book m ...
類的定義及使用
一,類的定義
class Book {//定義一個類 int price;//定義一個屬性 int num; public static int getMonney(int price, int num) {//定義一個方法 return price*num; } } public class test2 { public static void main(String args[]) { Book monney = new Book();//聲明並實例化對象 monney.price = 10; monney.num = 20; System.out.println(monney.getMonney(10,20)); } }
二,記憶體分析
類是引用類型,創建時會申請分配記憶體
堆記憶體:保存每一個對象的屬性,需要new關鍵字才可以創建
棧記憶體:保存一塊堆記憶體的地址
1,當使用Book bk = new Book();時,記憶體情況如下:
為屬性賦值之後,如下
2.分步創建對象,實例化
Book monney = null;
monney = new Book();
任何情況下,只要看見了關鍵詞new,就表示開闢堆記憶體,只要開闢了堆記憶體,一旦堆記憶體空間開闢了,裡面就會有對象中所有屬性,所有屬性的內容為預設值
實例化對象其實就是開闢堆記憶體
三,類的封裝
class Book { private int price; private int num; public void setPrice(int p) { price = p; } public void setNum(int n) { num = n; } public int getPrice() { return price; } public int getNum() { return num; } public int getMonney(int price, int num) { return price*num; } } public class test2 { public static void main(String args[]) { Book monney = new Book(); monney.setPrice(10); monney.setNum(20); System.out.println(monney.getMonney(10,20)); } }
在構造類的過程中,屬性儘量都寫成private,這樣,屬性就對外部隱藏。通過setter方法設置屬性值,getter方法獲取屬性值。外部若要訪問類的屬性,只有通過setter方法。
四,構造方法
類名 對象名 = new 類名();
1.類名:類的名字,決定對象的屬性和方法
2.對象名:對象的唯一標識
3.new:開闢堆記憶體,沒有new則無法實例化對象
4.類名() 實際上是調用了一個和類名相同的方法,即構造方法
我們從來沒有定義過構造方法,之所以可以使用,是java在編譯時,為我們添加了一個名稱與類相同,無參數,無返回值的方法
構造方法只在實例化新對象時使用一次,就是在book = new Book();時使用,而普通的方法實例化對象後可以多次調用
構造方法的作用:在 類對象實例化的時候設置屬性的初始化內容,即構造方法是為屬性初始化準備的,一個類中至少保留一個構造方法