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