<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
類(Class)是物件導向程式設計(OOP,Object-Oriented Programming)實現資訊封裝的基礎。類是一種使用者自定義的參照資料型別,也稱類型別。每個類包含資料說明和一組運算元據或傳遞訊息的函數,類的範例稱為物件
類的實質是一種參照資料型別,類似於 byte,short,int,char,long, float, double等基本資料型別,不同的是它是一種複雜的資料型別。因為它的本質是資料型別,而不是資料,所以不存在於記憶體中,不能被直接操作,只有被範例化為物件時,才會變得可操作。
我們可以發現Java中的類其實和C語言中的結構體很像,那麼他們有什麼區別呢?
1.打包的物件不同
C 語言的結構體是對資料的打包。把一堆概念上相互關聯的資料打包到一起,方便整體處理。外界可以隨意讀寫這些資料
Java的物件可以是對資料的打包,也可以是對職責的打包
2. 存放的位置不同
C 語言的結構體可以存放在棧上,也可以存在堆上
Java的物件只能存在堆上
類的成員可以包含以下:欄位、方法、程式碼塊、內部類和介面等
可以形象的理解為類是一個模板,類的範例化就是通過這個模板來建立物件(一個模板可以建立無數的物件)
宣告一個類其實就相當於是在自定義一種新的型別,參照型別
基本形式:
class 類名 {
欄位(成員變數/屬性);
方法(成員方法);
}
這裡的 class 就是類的關鍵字
類中的元素:屬性(在類裡面,方法的外面)
類中的方法:成員方法
如下範例:
public class Dog { public String name; public int age; public void bark() { System.out.println("汪汪"); } }
通過以上程式碼這就建立了一個狗這個類,有姓名和年齡兩個屬性,行為就是叫
屬性前面的public是存取修飾符
成員方法前面不加 static
預設值規則:0 的變形
特殊的:
參照型別:null
boolean:false
char:'u0000' (空字元)
class Dog { public String name; public int age; public boolean are; public static int a; public void bark() { System.out.println("汪汪"); } } public class Practice { public static void main(String[] args) { Dog dog = new Dog(); // 範例化一個物件 System.out.println(dog.are); // 通過.來存取 } }
這裡通過new來範例化一個物件,通過物件的參照 . 成員變數來存取成員變數,普通方法通過物件的參照 . 方法名來呼叫
被定義在類的內部,方法的外部,加static修飾
如下程式碼:
class Dog { public String name; public int age; public boolean are; public static int a; // 靜態屬性 public void bark() { System.out.println("汪汪"); } }
注意: 靜態屬性仍然遵循預設值規則
如何存取:
需要知道靜態成員變數並不屬於物件,而是屬於類,所以我們不能通過物件的參照 . 成員變數去存取,而是 類名 . 靜態屬性 去存取,靜態方法通過類名來存取
如下:
System.out.println(Dog.a);
錯誤範例:
System.out.println(dog.a);
存取類的靜態屬性不需要有物件,直接就可以存取
注意:
首先我們想想,一個物件時如何產生的?
在我們使用new來範例化物件時,構造方法會被自動呼叫,完成初始化操作
如下程式碼:
class Dog { public String name; public int age; public boolean are; public static int a; public Dog() { } public Dog(String name) { this.name = name; } public void bark() { System.out.println("汪汪"); } } public class Practice { public static void main(String[] args) { Dog dog = new Dog("旺財"); System.out.println(dog.name); } }
在這段程式碼中有Dog這個類,裡面共有兩個構造方法,一個無參構造,一個有參構造,在通過new建立物件時,使用了有參構造,可以看到列印出來的結果
所以其實也就能看出來,到底呼叫哪個構造方法,取決於new時傳的引數
需要注意:
this的作用
在很多情況下,可能都會有人誤以為 this 是當前物件,但其實 this 是當前物件的參照
為什麼this不是物件,而是參照:
我們要知道,構造方法是用來建立物件的,那麼在呼叫構造方法建立物件的過程中,這個物件還是不存在的,哪來的物件之說
因此我們可以通過this去存取屬性、成員方法、構造方法(呼叫構造方法時,只能放在第一行,只能在構造方法裡面寫,只能用一次)
到此這篇關於深入淺出分析Java 類和物件的文章就介紹到這了,更多相關Java 類和物件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45