摘要:本文繼續(xù)講封裝。上一篇樂字節(jié)垃圾回收機(jī)制和語句這次講述繼承與權(quán)限修飾。通過繼承,子類自動(dòng)擁有了基類的所有成員成員變量和成員方法。一覽無遺子承父業(yè)兒子自己使用家庭和睦占為已有。
本文繼續(xù)講Java封裝。上一篇:樂字節(jié)Java|GC垃圾回收機(jī)制、package和import語句
這次講述JavaBean、繼承與權(quán)限修飾。
封裝(Encapsulation)是面向?qū)ο蠓椒ǖ闹匾瓌t,就是把對(duì)象的屬性和行為(或方法)結(jié)合為一個(gè)獨(dú)立的整體,并盡可能隱藏對(duì)象的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。
(1)隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問方式
(2)好處:
A:隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問方式
B:提高代碼的復(fù)用性
C:提高代碼的安全性
(3)設(shè)計(jì)原則
把不想讓外界知道的實(shí)現(xiàn)細(xì)節(jié)給隱藏起來,提供公共的訪問方式
(4)private是封裝的一種體現(xiàn)。
public、protected、private、default
例1:
public class Use{ public static void main(String[] args) { Show.show("封裝"); } } //對(duì)System.out.println(str)的封裝,直接調(diào)用就好 class Show{ public static void show(String str){ System.out.println(str); } }
例2
public class Man { //對(duì)屬性的封裝,一個(gè)人的名字,年齡,妻子都是這個(gè)對(duì)象(人)的私有屬性 private String name; private int age; private Woman wife; //對(duì)該人對(duì)外界提供方法的封裝 可以設(shè)定妻子的名字,姓名,年齡也可以獲得男人的姓名和年齡 //方法封裝 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; } //此處少了一個(gè)getWife()方法,是因?yàn)樵撃腥瞬幌胱屚饨缭L問自己的妻子 public void setWife(Woman wife){ this.wife=wife; } } class Woman{ //屬性的封裝 private String name; private int age; private Man husband; //方法封裝 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 Man getHusband() { return husband; } public void setHusband(Man husband) { this.husband = husband; } }
JavaBean
本身是一個(gè)類,屬于Java的面向?qū)ο缶幊蹋且粋€(gè)封裝對(duì)象實(shí)例的封裝類。
javaBean編碼規(guī)則:
(1) javaBean必須聲明為public class,這樣才能夠被外部所訪問;
(2) 一個(gè)JavaBean中至少存在一個(gè)無參構(gòu)造方法
(3)類中所有的屬性都必須封裝,即:使用private聲明;
(4)為封裝的私有屬性提供公共的setter、getter方法;
二、 類的繼承與權(quán)限控制 1、繼承繼承:子承父業(yè)
繼承的本質(zhì)在于抽象。類是對(duì)對(duì)象的抽象,繼承是對(duì)某一批類的抽象,從而實(shí)現(xiàn)對(duì)現(xiàn)實(shí)世界更好的建模。同時(shí)使用繼承可以提高代碼的復(fù)用性。(事實(shí)上,利用組合可以更好的實(shí)現(xiàn)代碼復(fù)用!)extends的意思是“擴(kuò)展”。子類是父類的擴(kuò)展。
java中使用extends關(guān)鍵字實(shí)現(xiàn)類的繼承機(jī)制,語法規(guī)則:
作用: 實(shí)現(xiàn)代碼的復(fù)用,延續(xù)+擴(kuò)展父類信息。
通過繼承,子類自動(dòng)擁有了基類的所有成員(成員變量和成員方法)。
Java只支持單繼承,不允許多繼承:一個(gè)子類只能擁有一個(gè)基類,一個(gè)基類可以派生出多個(gè)子類
2、訪問控制Java權(quán)限修飾符 public protected private 置于類的成員定義前,用來限定其他對(duì)象對(duì)該類對(duì)象成員的訪問權(quán)限。
通過訪問權(quán)限的控制達(dá)到信息隱藏
理解:如電腦 利用一個(gè)外殼包裹,保護(hù)了里面的電器元件,提供了少量的按鍵與其對(duì)接使用。我要看電視,只需要按一下開關(guān)和換臺(tái)就可以了。有必要了解電視機(jī)內(nèi)部的結(jié)構(gòu)嗎?有必要碰碰顯像管嗎?
制造廠家為了方便我們使用電視,把復(fù)雜的內(nèi)部細(xì)節(jié)全部封裝起來,只給我們暴露簡單的接口,比如:電源開關(guān)。具體怎么內(nèi)部實(shí)現(xiàn)的,我們不需要操心。再比如你的手機(jī),手機(jī)的鍵盤,屏幕,聽筒等,就是其對(duì)外接口。你只需要知道如何按鍵就可以使用手機(jī),而不需要了解手機(jī)內(nèi)部的電路是如何工作的。封裝機(jī)制就像手機(jī)一樣只將對(duì)外接口暴露,而不需要用戶去了解其內(nèi)部實(shí)現(xiàn)。細(xì)心觀察,現(xiàn)實(shí)中很多東西都具有這樣的特點(diǎn)。
需要讓用戶知道的暴露出來,不需要讓用戶了解的全部隱藏起來。這就是封裝。白話:“該露的露,該藏的藏”。
概念:
我們程序設(shè)計(jì)要追求“高內(nèi)聚,低耦合”。高內(nèi)聚就是類的內(nèi)部數(shù)據(jù)操作細(xì)節(jié)自己完成,不允許外部干涉;
低耦合:僅暴露少量的方法給外部使用。
public: 一覽無遺;
protected:子承父業(yè) (兒子自己使用);
default :家庭和睦;
private :占為已有。
對(duì)于class的權(quán)限修飾只能用public和default。
public 類可以在任意地方訪問
default類只可以在同包被訪問
1)、屬性盡可能私有化 private
2)、訪問器: setter與getter訪問器 >private ,一般public居多
setterXxx: 存儲(chǔ) 與 getterXxx: 查看
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75567.html
摘要:大家好,樂字節(jié)的小樂又來了,上一篇是樂字節(jié)繼承與權(quán)限修飾,也是屬于繼承的,今天繼續(xù)繼承方法重寫和關(guān)鍵字。三關(guān)鍵字表示最終的。修飾類,表示該類不能被繼承修飾方法,表示該方法不能被重寫修飾屬性,表示常量,值一旦確定不可改變。 大家好,樂字節(jié)的小樂又來了,上一篇是:樂字節(jié)Java|JavaBean、繼承與權(quán)限修飾,也是屬于Java繼承的,今天繼續(xù)Java繼承-方法重寫、super和final...
摘要:大家好,小樂繼續(xù)接著上集樂字節(jié)反射之一反射概念與獲取反射源頭這次是之二實(shí)例化對(duì)象接口與父類修飾符和屬性一實(shí)例化對(duì)象之前我們講解過創(chuàng)建對(duì)象的方式有克隆反序列化,再加一種,根據(jù)對(duì)象,使用或者構(gòu)造器實(shí)例化對(duì)象。 大家好,小樂繼續(xù)接著上集:樂字節(jié)Java反射之一:反射概念與獲取反射源頭Class 這次是之二:實(shí)例化對(duì)象、接口與父類、修飾符和屬性 一:實(shí)例化對(duì)象 之前我們講解過創(chuàng)建對(duì)象的方式,有...
摘要:在成員方法中或構(gòu)造器中隱式的傳遞。作用如下在構(gòu)造器中只能放在第一行屬性避免屬性和形參局部變量同名,發(fā)生就近原則實(shí)參列表構(gòu)造器的首行調(diào)用其他構(gòu)造器。關(guān)鍵字靜態(tài)的公共的。構(gòu)造塊,先于構(gòu)造器執(zhí)行,每創(chuàng)建一個(gè)對(duì)象執(zhí)行一次。 大家好,我是樂字節(jié)的小樂,從本文開始將會(huì)給大家講述Java繼承,一下是Java繼承的知識(shí)圖譜:showImg(https://segmentfault.com/img/bV...
摘要:注意當(dāng)多個(gè)父接口中存在相同的默認(rèn)方法時(shí),子類中以就近原則繼承。定義靜態(tài)默認(rèn)方法這是版簡易計(jì)算器接口默認(rèn)方法使用定義接口并提供默認(rèn)打印方法定義接口默認(rèn)方法支持方法形參這是數(shù)值運(yùn)算基本接口。。。 總概 JAVA8 已經(jīng)發(fā)布很久,而且毫無疑問,java8是自java5(2004年發(fā)布)之后的最重要的版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...
摘要:經(jīng)典的基礎(chǔ)面試題集錦經(jīng)典的基礎(chǔ)面試題集錦,歡迎收藏和分享。類變量或者說靜態(tài)變量是通過這個(gè)關(guān)鍵字來聲明的。非靜態(tài)變量在每一個(gè)對(duì)象實(shí)例上都有單獨(dú)的一份值。對(duì)象允許程序和數(shù)據(jù)進(jìn)行封裝,以減少潛在的干涉。 經(jīng)典的Java基礎(chǔ)面試題集錦 經(jīng)典的Java基礎(chǔ)面試題集錦,歡迎收藏和分享。 問題:如果main方法被聲明為private會(huì)怎樣? 答案:能正常編譯,但運(yùn)行的時(shí)候會(huì)提示main方法不是pub...
閱讀 1407·2021-09-02 09:53
閱讀 2671·2021-07-29 13:50
閱讀 1720·2019-08-30 11:07
閱讀 1574·2019-08-30 11:00
閱讀 1455·2019-08-29 14:00
閱讀 1850·2019-08-29 12:52
閱讀 2566·2019-08-29 11:11
閱讀 3424·2019-08-26 12:23