面向对象简述--对象、引用、指针
類和成員對(duì)象
【定義類】
(1)兩個(gè)重要概念:
類(class):類是某一批對(duì)象的抽象,可以把類理解成某一種概念。
對(duì)象(object,也被稱為實(shí)例,instance):對(duì)象才是一個(gè)實(shí)際存在的實(shí)體。
?
(2)定義類的簡(jiǎn)單語(yǔ)法:
? ?[修飾符]? class? 類名{
? ? ? ? ?零到多個(gè)構(gòu)造器定義。。
? ? ? ? ?零到多個(gè)成員變量。。
? ? ? ? ?零到多個(gè)方法。。? ? ? ? ?
? ?}
成員變量:定義類或該類的實(shí)例所包含的狀態(tài)數(shù)據(jù)。
方法:定義該類或該類實(shí)例所包含的行為特征或功能實(shí)現(xiàn)。
構(gòu)造器:用于構(gòu)造該類的實(shí)例。Java語(yǔ)言通過new關(guān)鍵字來(lái)構(gòu)造實(shí)例,從而返回該類的實(shí)例。構(gòu)造器是一個(gè)類創(chuàng)建對(duì)象的根本途徑,如果一個(gè)類沒有構(gòu)造器,這個(gè)類通常無(wú)法創(chuàng)建實(shí)例。因此,java語(yǔ)言提供了一個(gè)新的功能:如果程序員沒有為一個(gè)類編寫一個(gè)構(gòu)造器,則系統(tǒng)會(huì)為該類提供一個(gè)默認(rèn)的構(gòu)造器(總是無(wú)參的)。一旦程序員為一個(gè)類提供了構(gòu)造器,系統(tǒng)將不會(huì)為該類提供構(gòu)造器。
?
注:
(i)static修飾符:
? ? ? ?是一個(gè)特殊的關(guān)鍵字,可用于修飾方法和成員變量等成員,static修飾的成員表 明它屬于這個(gè)類本身,而不屬于該類的單個(gè)實(shí)例,因此通常把static修飾的成員變量也稱為類變量和類方法。不使用static修飾的普通方法、成員變量則屬于該類的單個(gè)實(shí)例,而不屬于該類。因此通常把不適用static修飾的成員變量和方法稱為實(shí)例變量、實(shí)例方法。由于static的英文翻譯是“靜態(tài)”,所以有時(shí)也把使用static修飾的成員變量和方法也稱為靜態(tài)變量和靜態(tài)方法,反之,稱為非靜態(tài)變量和非靜態(tài)方法。靜態(tài)成員不能直接訪問非靜態(tài)成員。
? ? ? ?static的真正作用就是用于區(qū)分成員變量、方法、內(nèi)部類、初始化塊這四種成員到底屬于類本身還是屬于實(shí)例,static相當(dāng)于一個(gè)標(biāo)志,有static修飾的成員屬于類本身,沒有static修飾的成員屬于該類的實(shí)例。
?
(3)構(gòu)造器
構(gòu)造器名必須和類名相同。
問:構(gòu)造器不是沒有返回值嗎?為什么不能用void聲明呢?
答:簡(jiǎn)單的說,這是java的語(yǔ)法規(guī)定。實(shí)際上,類的構(gòu)造器器是返回值的,當(dāng)使用new關(guān)鍵字來(lái)調(diào)用構(gòu)造器時(shí),構(gòu)造器返回該類的實(shí)例,可以把這個(gè)類的實(shí)例當(dāng)成構(gòu)造器的返回值,因此構(gòu)造器的返回值類型總是當(dāng)前類,無(wú)須定義返回值類型。但必須注意:不要在構(gòu)造器里顯示使用return來(lái)返回當(dāng)前類的返回對(duì)象,因?yàn)闃?gòu)造器的返回值是隱式的。
?
【對(duì)象、引用、指針】
Person p = new Person();
p.name = "李三";
p.age = 29;
? ? ? ?與數(shù)組類型相似,類也是一種引用數(shù)據(jù)類型,因此程序中定義的Person類型的變量實(shí)際上是一個(gè)引用,它被存放在棧內(nèi)存中,指向?qū)嶋H的Person對(duì)象;而真正的Person對(duì)象則存放在堆(heap)內(nèi)存中。如上圖。
? ? ? ? 棧內(nèi)存里的引用變量并未真正的存儲(chǔ)對(duì)象的成員變量,對(duì)象的成員變量數(shù)據(jù)實(shí)際上存放在堆內(nèi)存里;而引用變量只是指向該堆內(nèi)存里的對(duì)象。
? ? ? ?當(dāng)一個(gè)對(duì)象被創(chuàng)建成功以后,這個(gè)對(duì)象將保存在堆內(nèi)存中,java程序不允許直接訪問堆內(nèi)存中的對(duì)象,只能通過該對(duì)象的引用來(lái)操作該對(duì)象。
注:如果希望垃圾回收機(jī)制回收某個(gè)對(duì)象,只需切斷該對(duì)象的所有引用變量和它之間的關(guān)系即可,也就是把這些引用變量賦值為null。
轉(zhuǎn)載于:https://www.cnblogs.com/zhzcode/p/9596325.html
總結(jié)
以上是生活随笔為你收集整理的面向对象简述--对象、引用、指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Elasticsearch优化
- 下一篇: 配置MYSQL基于GTID 主从复制详细