這篇文章我講述的是類與對象的關系,以及類與對象的創建過程以及在創建的時候內存的分配方式。
首先,我們先了解一下什么是類,什么是對象?
類——簡單的說就是對象的高度概括。
對象——對象是一個類的具體表現。
類是所有具有相同特征的對象抽象出來的總體概括,也就是說類是只是一個概念,這個概念包括所有對象的共同屬性和方法。對象是類的一個具體的實例,是實實在在存在的。
也可以說,類包含了這個類所創建的所有對象的共同點。就像通常我們所說的人類。人類都有一定的屬性(例如,我們都有名字,都有手有腳……),這個屬性并不是人類特有的(比如,猩猩這個類,他們也都有手有腳……),但一定是全部的人所共有的——也就是說所有的人都有人類的屬性。當然,每一個類也都有一定的方法(例如,人類都可以思考問題,可以吃飯,可以睡覺),但不一定是人類所特有的(比如,猩猩也可以做一些簡單的思考,也可以吃飯睡覺等)。
在我看來,我覺得 類 用一句話說就是:具有相同特征(屬性)和行為(方法)的任何事物都可以看做一個類。
對象 就是:某個類的具體實例,一個實實在在的事物,擁有類的特征和方法。
——這里先不考慮一些特殊情況。
現在,我們來說說在Java編程中類的創建以及在創建過程中內存的分配方式:
在Java中創建類的關鍵字是 class ,類名總收標識符的命令方式,但類名的第一個字母應該大寫,這只是業內人士的一種規則,好處嘛當然也是大大的……
下面我們以一個例子來說明:
//創建一個Person類
class Person
{
//定義類的name和age屬性
public String name;
public int age;
//定義一個類的簡單的方法
public void say(){
System.out.println("I am SKY!");
}
}
這個類是創建完了,但這個過程內存是怎么分配的我還不清楚,其實我覺得這不是我們現在要考慮的問題,最重要的是下一步類的聲明和實例化過程中內存是怎么分配的。
//我們再定義一個Person測試類PersonTest
public class PersonTest{
public static void main(String[] args){
//聲明一個person1對象
Person person1 = null;//——>這個過程只是在棧內存開辟一塊空間,存放person1的句柄
//對象的實例化
person1 = new Person();//——>這個過程是在堆內存開辟了一塊空間,來存放person1的屬性和方法(這塊內存的首地址會被存放在person1在棧的內存中)
//其實在這我也有部分不明白:就是這時的person1句柄是不是就是person1在堆內存的地址?
//調用say方法
person1.say();
}
}
運行這個程序,會輸出:
I am SKY!
可能自己的表達能力有限,說的不夠清楚,如有疑問,請留下來,我們一起探討。