Java面向對象中的封裝和訪問控制符詳解

2020-12-16 三牛講Java

封裝

面向對象編程有三大概念:封裝、繼承、多態,今天我們就先從封裝開始講起。

封裝(Encapsulation)是面向對象方法的重要原則,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,並儘可能隱藏對象的內部實現細節。

封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的接口。面向對象設計始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。封裝可以讓程序更容易理解和維護,也加強了程序的安全性。封裝給對象賦予了「黑盒「特徵,這是提高重用性和安全性的關鍵。讓開發者關注結果而不用去關注每個細節。

java

屬性私有後無法直接訪問,private修飾的就叫私有,那如何修改值呢?可以通過set方法。那如何獲取值呢?可以通過get方法。而且Eclipse工具會自動生成這些方法,不用我們寫多省事。

訪問控制符

用來控制一個類,或者類中的成員的訪問範圍。

l 使用原則:儘量使用小範圍

l public 是與其他開發人員的一個契約,約定公開的東西會儘量保持穩定不變

l private 私有隱藏,便於修改

l 不寫修飾符,即默認default

設計原則

一個類常常就是一個小的功能模塊,儘量讓其功能單一,術有專攻。將必須外界知道的內容公開public,對外界不需要知道的內容隱藏private。避免一個模塊直接操作另一個模塊的數據,這樣稱之為耦合度高,如果我們想替換,換個模塊就非常費事。所以設計時我們要遵循高內聚,低耦合的原則。

java

例如:我們的滑鼠,就是非常典型的好產品。只有兩個按鈕一個滾輪。用戶只能操作這麼點東西,內部怎麼實現的?不知道。例如:滑動滾輪,網頁怎麼就隨之滾動了呢?用戶無需知道,只需要滑動滾輪,網頁隨之上下翻滾就行了。

簡單來說:少public,多private。

重載特點

l 在同一個類中方法名相同

l 參數個數不同

l 參數的個數相同,但類型不同

例如下面都是println()但參數個數有的一個有的兩個,參數類型也不相同,System.out.println( … )

java

面向對象三大特性

1. 封裝(Encapsulation)隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,將變化隔離,便於使用,提高復用性和安全性。

2. 繼承(Inheritance)提高代碼復用性;繼承是多態的前提。

3. 多態(Polymorphism)父類或接口定義的引用變量可以指向子類或具體實現類的實例對象。提高了程序的拓展性。

相關焦點

  • Java訪問控制修飾符詳解(public、 private、protected 和 friendly)
    本文將詳細介紹訪問控制修飾符。在實際生活中,如果要獲取某件物品,與其直接穿過堡壘的牆壁,從而導致牆壁毀滅和破壞,不如通過門口的警衛請求進入堡壘的許可。一般而言,這對對象同樣適用:沒有對象的許可(即對象的屬性是私有的),不能直接訪問該對象的私有屬性。信息隱藏是 OOP 最重要的功能之一,也是使用訪問修飾符的原因。
  • Java面向對象程序設計的基本概念
    面向對象的程序設計涉及到對象、封裝、類、繼承及多態等幾個基本概念。
  • 尚學堂知識整理:java面向對象設計(二)
    Java面向對象編程有三個主要特點。封裝封裝意味著將所有變量(實例變量)和方法放在一個稱為類的單元中,在對象內隱藏數據和方法。 封裝提供了保證數據和方法免於被意外更改的安全性。程式設計師有時將封裝稱為使用「黑盒」,或者可以使用而不考慮內部實現機制。 程式設計師可以訪問和使用黑盒中包含的方法和數據,但不能更改它們。
  • 通過「訪問修飾符」java想告訴我們什麼?
    01定義java有四個訪問修飾符public:被public修飾的成員可以被所有類訪問到protected:所修飾的成員會被位於同一包中所有類可以訪問到。結合上面的例子和各個訪問修飾符的定義,我們大致就能了解訪問修飾符在程序中的作用了設立各個成員的界限,讓程序更安全03訪問修飾符目的我們都知道java是一門面向對象的設計語言,「封裝」是它的一大特性
  • Java面向對象之枚舉——enum
    Java面向對象之枚舉——enum引出枚舉首先來考慮這樣一個需求:判斷一個員工(Employee)在一周的哪一天休息。和接口一樣,枚舉是一個特殊的類,其實質上就是數量固定的多個常量對象的集合。枚舉主要用來表示固定的事務類型。枚舉語法定義格式:常量之間使用英文狀態下的「,」分隔,最後一個常量之後必須要用「;」結尾。
  • java基礎知識乾貨——封裝
    很多java初學者,在學到Java面向對象方面的知識點的時候,會覺得這塊的知識點真的蠻繞的,一個知識點一個知識點的往外冒,對於初學者來說區分構造器和方法就花費了一整天的時間
  • 黑馬程式設計師:Java中類與對象的關係,類的封裝和使用等習題
    習題總結:本文習題主要是圍繞面向對象的基礎。首先是面向對象的思想,之後就是類與對象之間的關係,類的封裝和使用。另外也會涉及到構造方法的定義與重載,this和static關鍵字的使用;其次還有三種內部類的定義以及應用場景等。熟練掌握好這些知識,有助於學習後面的內容,並且深入理解面向對象的思想,對以後的實際開發也是大有幫助。有需要本文習題答案的同學,可以轉發文章並且留言獲取。
  • 學會面向對象要知道的五大原則
    面向對象設計原則是OOPS編程的核心,但大多數Java程式設計師熱心於像Singleton (單例) 、 Decorator(裝飾器)、Observer(觀察者) 等設計模式,而沒有把足夠多的注意力放在學習面向對象的分析和設計上面。
  • Java基礎入門篇之面向對象和類的定義
    Java基礎入門篇之面向對象和類的定義 本文主要介紹了面向對象概念,面向對象的三個特點封裝性、繼承性、多態性。類的定義和創建對象與使用。詳細的介紹了怎麼去定義一個類,通過案例來理解怎麼去定義的。對象的創建與使用介紹了使用的格式,通過創建對象後,可以通過對象的引用來訪問對象的成員。
  • 從頭再來:Java訪問權限控制
    Java訪問權限控制先來一個簡單的測試題:Java中的抽象類和接口可以設為private嗎?Java的訪問權限有四種,分別為private,默認的,protected和public。再解釋者四種權限之前,先看看包(package)的使用。Java中的包一個包可以把一組類組織在一起,放到一個相同的名字空間下。定義包用到的關鍵字package。
  • java對象,重中之重,重在理解對象含義,訪問權限描述
    持續更新中...一、對象Java語言是一種面向對象的語言,那究竟什麼是對象?網上和書上對於對象都有很多專業的描述,小編這裡就不多做官方上的解釋。這裡用身邊常用的物品舉例——手機。把手機比喻成對象,那麼手機的各個硬體例如顯示屏、電池、CPU、聽筒等都是對象裡的自動;使用APP、打電話、瀏覽網頁等就類似對象裡的方法。面向對象的核心是把任何事物抽象 為類,這個事物具備抽象的能力就是抽象出來的方法,這個事物具備的各個實際物品就是抽象出來的欄位。下面小編寫一個學生類,即學生對象。
  • Java面向對象編程開發認證考試項目介紹
    1、證書頒發機構介紹工業和信息化部人才交流中心(以下簡稱中心)創建於1985年1月,1992年10
  • java開發工程師 javascript面向對象的初識
    在這段代碼中,我定義了一個名稱為people的函數,this指代的是當前的實例對象,這裡可以先理解為people這個函數。在這個函數中,有name和age屬性。並且還擁有一個sleep的方法。當我們定義function people(){}的時候,就相當於在js的window對象中開闢了一塊空間,相當於一個模板,名稱叫做people被靜靜的放置在那兒,等待程式設計師去創建他的實例。那麼突然之間,你new 了這個people一下,那麼它就會為你這個new的東西產生一塊和people模板一模一樣的內存空間。
  • 3分鐘帶你理解:Java面向對象中的成員內部類
    上篇文章我們講到Java面向的一個重要特徵--「封裝」,而內部類的使用可以提供更好的封裝。回憶:內部類的主要作用:內部類提供了更好的封裝,可以把內部隱藏在外部之內,不允許同一個包中的其他類訪問該類內部類的方法可以直接訪問外部類的所有數據
  • Java面向對象之final、abstract抽象、和變量生命周期
    Java面向對象之final、abstract抽象、final修飾符final是最終、不可修改的意思, 在Java中它可以修飾非抽象類,非抽象方法和變量。在繼承關係中最大弊端就是會破壞封裝,子類能訪問父類的實現細節,,而且可以通過方法重寫(方法覆蓋)的方式修改方法的實現細節。且 final還是是唯一可以修飾局部變量的修飾符。
  • Java類與對象及訪問控制修飾詞解析
    Java 是個純面向對象語言,不支持過程式編程,所有操作都是基於對象。一、類類是 Java 中的一種引用數據類型,引用數據類型值都存儲在堆中。類是構造對象的模板,每個類對象都是類通過 new 語句創建的。
  • 圖說Java中的OOPs(面向對象編程系統)基本概念
    面向對象編程是一種編程概念,其核心思想是允許用戶創建所需要的對象,然後提供處理這些對象的方法,使用者通過操作對象而獲得運算數據。本文將以簡潔的方式對面向對象編程中的概念進行梳理。1.對象既包含數據又包含對數據進行操作的方法。例如,我們日常生活中能夠體現具體物理事物的鋼筆,電腦桌,顯示器,自行車,玻璃杯等等。3. Inheritance(繼承)繼承是Java中的一種機制,它允許其中一個對象獲取父對象的所有屬性和行為(方法)。他是面向對象編程系統(OOPS)的重要組成部分。Java繼承的思想是可以創建基於現有類的新類。
  • 手把手Java入門:繼承(面向對象篇)
    繼承的概念繼承是java面向對象編程中的基石,它允許創建分層次的類。繼承是子類繼承父類的特徵和行為,使得子類對象具有父類的實例域和方法,或者子類直接繼承父類的方法,使得子類具有父類相同的行為。生活中的繼承老鼠和貓都是動物類,老鼠和貓就是動物類的子類,而動物類就是父類,繼承的符合關係是:is-a.在java中實現繼承的關鍵字是extends,它可以聲明一個類是從另外一個類繼承而來的。
  • Java基礎:封裝與繼承
    :封裝和繼承,同時了解一下final關鍵字的用法。封裝接下來我們進一步來學習一些面向對象編程的技術。先來了解封裝的概念。封裝是一種隱藏信息的技術,是將一個系統中的結構和行為通過類來劃分的過程。即通過定義一組類,將特定的數據組合到某一個類中,形成一個整體,將該隱藏的數據進行保護,只對外暴露這些數據的訪問的方法。封裝代碼有兩個好處:封裝甚至被一些面向對象的開發人員視為第一原則。
  • JAVA對象中POJO、PO、BO、VO、DTO你能分清嗎?
    這個類的屬性使用getter和setter來訪問,其他方法遵從標準命名規範。        這個類應是可序列化的。實現serializable接口。object 無規則簡單java對象。