<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
或許大家都聽說過java是純物件導向語言,物件導向思想也就是我們常說的OOP,我們聽說最多的思想就是繼承,封裝,多型,今天我們來講一講封裝。
封裝就是一種將資料和運算元據的方法進行有機結合,一種函數抽象類的介面實現了對細節的封裝和隱藏,使得我們只需要呼叫對外開放的公共介面去實現與物件的互動。我們可以把封裝理解為一種保護的屏障,需要一些嚴格的介面進行控制,我們可以修改自己實現類的內部結構的程式碼,但是不可以修改那些公共介面。這就提供更好的安全性。
講到封裝那必然講到關鍵字private也就是存取修飾限定符。
回憶一下我們見過哪些存取修飾限定符呢?有public ,還有成員變數什麼也不加的預設許可權英文是default,還有就是我們今天要講解的private,下一篇文章會講解protected。
那private到底有什麼用處呢?
我們在來回憶一下上篇文章講過的類和物件,下面我會建立一個學生類。
//建立一個學生類 class Student { public String name;//學生姓名 public int age;//學生年齡 public String sex;//學生性別 public double score;//學生分數 public void sleep() { System.out.println("我要睡覺了!!!"); } public void eat() { System.out.println("我要乾飯了!!!"); } public void exam() { System.out.println("我要考試了!!!"); } } public class TestDemo { public static void main(String[] args) { Student student = new Student();//利用new關鍵字範例化一個物件 student.age = 19; student.name = "厚積薄發"; student.score = 99.9; student.sex = "男"; } }
以上的程式碼我們將這個學生成員變數分別賦值。這樣寫會不會有什麼不足呢?
想一想,如果我們每次要定義一個學生物件,每次都要這樣賦值會不會有點太麻煩?今天我們講到封裝就會讓它更簡單一些。請看下面程式碼:
class Student { private String name;//學生姓名 private int age;//學生年齡 private String sex;//學生性別 private double score;//學生分數 public String getName() { return name; } public void setName(String name) { this.name = name; } } public class TestDemo { public static void main(String[] args) { Student student = new Student(); student.setName("厚積薄發"); System.out.println(student.getName()); } }
根據封裝的概念我是不是可以給它封裝成一個公共的介面然後呼叫。
好接下來分析一下這個程式碼:
所以,我們在成員變數前面加上private修飾使得成員變數只能在類的內部存取,不能在類的外部存取,然後我們實現了setName getName方法,呼叫者兩個介面就可以進行初始化和返回值操作,更好地體現了封裝性。
為了更方便的呼叫這些介面,IDEA會為我們提供了這些介面,我們通常情況下把這些方法叫做getter方法和setter方法。只要我們需要我們就可以呼叫這些共有的getter方法和setter方法。
IDEA快捷鍵:Alt + insert
class Student { private String name;//學生姓名 private int age;//學生年齡 private String sex;//學生性別 private double score;//學生分數 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public void sleep() { System.out.println("我要睡覺了!!!"); } public void eat() { System.out.println("我要乾飯了!!!"); } public void exam() { System.out.println("我要考試了!!!"); } } public class TestDemo { public static void main(String[] args) { Student student = new Student();//利用new關鍵字範例化一個物件 student.setName("厚積薄發"); student.setAge(19); student.setScore(99.9); student.setSex("male"); System.out.println(student.getName()); System.out.println(student.getAge()); System.out.println(student.getScore()); System.out.println(student.getSex()); } }
此外,我們每個成員變數都要自己實現一遍列印操作,沒錯IDEA編譯器又為我們提供了一個方法,這個方法叫做toString方法,快捷鍵是 Alt +insert然後選擇toString方法。
我們直接列印物件的參照就可以呼叫toString方法.
有同學就會問為什麼呢?
這就得需要我們看一看println的原始碼是怎麼實現的了。
我們按住ctrl 點進println這個方法
我們通過原始碼就可以發現,println會呼叫toString方法,如果定義了toString方法,那他就呼叫toString方法,如果沒有呼叫他就會列印:
eg:
快捷鍵: Alt + insert 選擇constructor
private關鍵字:利用private修飾的成員變數和方法只能在本類中存取,如果在外部存取可以呼叫公有的setter方法和getter方法。
封裝的優點:減少程式碼的耦合性 , 可以自由修改自己的內部類,不用修改公有地介面 ,隱藏資訊實現細節,更精準的控制成員變數。
要記住並且運用並且呼叫這些公共的介面:getter方法和setter方法 還有toString方法以及 構造方法。
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注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