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