<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先我們需要弄清楚幾個概念:物件導向是什麼、類是什麼、物件又是什麼?還是逐個來說
我們常說Java是物件導向的語言,C語言是程式導向的語言,那物件導向是什麼,它和程式導向的區別在哪?
物件導向是解決問題的一種思想,其核心是依靠物件之間的互動來解決事情
至於物件導向和程式導向的區別,假設現在有一道數學題:
程式導向:你自己進行手算,你需要關注套用什麼公式,如何化簡、哪些條件組合可以推出什麼結論等,中間有一個環節出錯都不行
物件導向:你把問題給計算機,讓計算機解決,我們關注的只是人和計算機這兩個物件如何互動
這麼看物件導向好像比程式導向更高階,但其實二者沒有好與壞之分,它們都有自己專門的應用場景,就比如數學考試的時候題目你就只能自己寫( ̄▽ ̄)
假設你要設計某個東西,類就是你所畫的圖紙,物件則是你通過圖紙造出來的實物;一個類可以產生多個物件
在定義類的時候需要使用一個關鍵字:class
具體語法如下:
class ClassName { field; method; }
ClassName
:類名field
:成員變數method
:成員方法我們現在定義一個類Book,裡面成員變數包括書名、作者和價格,成員方法就是列印所有成員變數
文章後面的概念都會圍繞這個類來進行講解
在main方法中範例化一個物件用到的關鍵字:new
程式碼如下:
Book book1 = new Book();
之後便可以使用“.”來存取類中的成員變數和成員方法,如下:
之前我們說過Java中的變數都要初始化,類裡面的成員變數也不例外,如果成員變數未初始化,那麼預設是對應的資料型別的0值
整型變數是0,浮點數是0.0,布林型別為false,參照型別為null,char為'u0000'
我們現在往類裡面再增加一個方法setBook,用這個方法來對成員變數進行初始化
public void setBook(String name,String author,int price) { name=name; author=author; price=price; }
我們再來看一下結果:
為什麼全部都是0值?
其原因在於方法的引數名和成員變數名相等,形參因為數區域性變數,所以程式認為方法裡面的name等變數全部都是形參
我們只需要將等號左邊的變數加上this就可以解決這個問題
this代表的是當前物件的參照(誰呼叫了this,誰就是當前物件)
上圖中book1呼叫的setBook方法,所以 book1是當前物件,方法中的this.name等變數就相當於告訴程式這個不是方法的形參,而是物件book1的成員變數
這個比較好理解,就是在方法裡面參照類中的其它方法,但注意一點:參照不能成環
假設setBook裡面參照了show方法,那麼show方法裡面就不能再參照setBook,否則就亂套了
還有一點需要補充:
上面提到過一個類可以產生多個物件,那麼多個物件呼叫同一個方法,程式如何分辨是哪個物件呼叫的?
依舊是this參照
類中的方法起始都有一個隱式的this引數,通過this知道是哪個物件呼叫的方法,也就是說setBook方法其實是有4個引數,如下:
public void setBook(Book this,String name,String author,int price) { this.name=name; this.author=author; this.price=price; }
除了存取成員方法外,this還可以呼叫本類其它構造方法,這一點在構造方法中再介紹
1.只能在成員方法中使用
2.是成員方法的第一個隱藏的引數
3.在成員方法中只能參照當前物件(在物件Book1中使用this就只能參照Book1,不能參照物件Book2)
4.為對應類的型別參照,即哪個物件呼叫就是哪個物件的參照型別
構造方法也是成員方法,但它比較特殊,物件的初始化除了在main方法中使用“.”一個一個初始化外還可以使用構造方法
在範例化一個物件的時候一定會經過兩個步驟:
如果使用者沒有寫構造方法,編譯器會預設提供一個不帶引數的構造方法,寫了就呼叫使用者自己寫的構造方法
我們寫一個構造方法如下:
public Book(String name, String author, int price) { this.name = name; this.author = author; this.price = price; }
那麼初始化物件如下:
上面提到構造方法可以過載,那麼我們再寫一個沒有引數的構造方法
public Book() { }
this在構造方法中可以呼叫其它的構造方法,比如我在沒有引數的構造方法中呼叫上面的有三個引數的構造方法
注意:
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注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