日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA知识基础(七):封装

發(fā)布時間:2025/3/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA知识基础(七):封装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.概述

封裝(Encapsulation)是指一種將抽象性函式接口的實現(xiàn)細(xì)節(jié)部分包裝、隱藏起來的方法。

封裝可以被認(rèn)為是一個保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機訪問。
要訪問該類的代碼和數(shù)據(jù),必須通過嚴(yán)格的接口控制。
封裝最主要的功能在于我們能修改自己的實現(xiàn)代碼,而不用修改那些調(diào)用我們代碼的程序片段。
適當(dāng)?shù)姆庋b可以讓程式碼更容易理解與維護(hù),也加強了程式碼的安全性。

2.封裝的優(yōu)點

  • 隱藏信息,實現(xiàn)細(xì)節(jié)。
  • 良好的封裝能夠減少耦合。
  • 類內(nèi)部的結(jié)構(gòu)可以自由修改。
  • 可以對成員變量進(jìn)行更精確的控制。
  • 3.實現(xiàn)封裝的方式:使用訪問控制符

    java提供了三種訪問權(quán)限,準(zhǔn)確的說還有一種是默認(rèn)的訪問權(quán)限,加上它一共四種。

    • private   在當(dāng)前類中可訪問
    • default 在當(dāng)前包內(nèi)和訪問
    • protected 在當(dāng)前類和它派生的類中可訪問
    • public 公眾的訪問權(quán)限,誰都能訪問

    4.JAVA中包的概念

    Java中用package關(guān)鍵字定義一個

    package名稱就像是我們的姓,而class名稱就像是我們的名字 。package和package的附屬關(guān)系用”.”來連接,這就像是復(fù)姓。比如說 java.lang.String就是復(fù)姓 java.lang,名字為 String 的類別;java.io.InputStream 則是復(fù)姓 java.io,名字為 InputStream的類別。

    Java 會使用 package 這種機制的原因也非常明顯,就像我們?nèi)⌒彰粯?,光是一間學(xué)校的同一屆同學(xué)中,就有可能會出現(xiàn)不少同名的同學(xué),如果不取姓的話,那學(xué)校在處理學(xué)生資料,或是同學(xué)彼此之間的稱呼,就會發(fā)生很大的困擾。相同的,全世界的 Java 類數(shù)量,恐怕比日本人還多,如果類別不使用package名稱,那在用到相同名稱的不同類時, 就會產(chǎn)生極大的困擾。所以package這種方式讓極大降低了類之間的命名沖突。

    Java 的package名稱我們可以自己取,不像人的姓沒有太大的選擇 ( 所以出現(xiàn)很多同名同姓的情況 ),如果依照 Sun 的規(guī)范來取套件名稱,那理論上不同人所取的套件名稱不會相同 ( 需要的話請參閱 “命名慣例” 的相關(guān)文章 ),也就不會發(fā)生名稱沖突的情況。

    5.import的兩種導(dǎo)入聲明

    單類型導(dǎo)入(single-type-import)
    (例:import java.util.ArrayList; )
    按需類型導(dǎo)入(type-import-on-demand)
    (例:import java.util.*;)
    *有如下屬性:
    1.java以這樣兩種方式導(dǎo)入包中的任何一個public的類和接口(只有public類和接口才能被導(dǎo)入)
    2.上面說到導(dǎo)入聲明僅導(dǎo)入聲明目錄下面的類而不導(dǎo)入子包,這也是為什么稱它們?yōu)轭愋蛯?dǎo)入聲明的原因。
    3.導(dǎo)入的類或接口的簡名(simple name)具有編譯單元作用域。這表示該類型簡名可以在導(dǎo)入語句所在的編譯單元的任何地方使用.這并不意味著你可以使用該類型所有成員的簡名,而只能使用類型自身的簡名。
    例如: java.lang包中的public類都是自動導(dǎo)入的,包括Math和System類.但是,你不能使用它們的成員的簡名PI()和gc(),而必須使用Math.PI()和System.gc().你不需要鍵入的是java.lang.Math.PI()和java.lang.System.gc()。
    4.程序員有時會導(dǎo)入當(dāng)前包或java.lang包,這是不需要的,因為當(dāng)前包的成員本身就在作用域內(nèi),而java.lang包是自動導(dǎo)入的。java編譯器會忽略這些冗余導(dǎo)入聲明(redundant import declarations)。即使像這樣

    import java.util.ArrayList; import java.util.*;*

    多次導(dǎo)入,也可編譯通過。編譯器會將冗余導(dǎo)入聲明忽略.

    6.static import靜態(tài)導(dǎo)入

    在Java程序中,是不允許定義獨立的函數(shù)和常量的。即什么屬性或者方法的使用必須依附于什么東西,例如使用類或接口作為掛靠單位才行(在類里可以掛靠各種成員,而接口里則只能掛靠常量)。
    如果想要直接在程序里面不寫出其他類或接口的成員的掛靠單元,有一種變通的做法 :
    將所有的常量都定義到一個接口里面,然后讓需要這些常量的類實現(xiàn)這個接口(這樣的接口有一個專門的名稱,叫(“Constant Interface”)。這個方法可以工作。但是,因為這樣一來,就可以從“一個類實現(xiàn)了哪個接口”推斷出“這個類需要使用哪些常量”,有“會暴露實現(xiàn)細(xì)節(jié)”的問題。
    于是J2SE 1.5里引入了“Static Import”機制,借助這一機制,可以用略掉所在的類或接口名的方式,來使用靜態(tài)成員。static import和import其中一個不一致的地方就是static import導(dǎo)入的是靜態(tài)成員,而import導(dǎo)入的是類或接口類型。

    總結(jié)

    以上是生活随笔為你收集整理的JAVA知识基础(七):封装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。