java13面向?qū)ο笊钊?

大綱

這里沒有寫

面向?qū)ο?封裝性

理解

封裝( encapsulation)怎么去理解,一臺電腦利用一個外殼包裹回论,保護了里面的電器元件散罕,提供了少量的按鍵與其對接使用。我要看電視傀蓉,只需要按一下開關(guān)和換臺就可以了欧漱。有必要了解電視機內(nèi)部的結(jié)構(gòu)嗎?有必要碰碰顯像管嗎葬燎?制造廠家為了方便我們使用電視误甚,把復(fù)雜的內(nèi)部細節(jié)全部封裝起來,只給我們暴露簡單的接口谱净,比如:電源開關(guān)窑邦。具體怎么內(nèi)部實現(xiàn)的,我們不需要操心壕探。

需要讓用戶知道的暴露出來冈钦,不需要讓用戶了解的全部隱藏起來。這就是封裝,白話: “ 該露的露李请,該藏的藏”瞧筛。

概念

? 我們程序設(shè)計要追求“ 高內(nèi)聚,低耦合”导盅。高內(nèi)聚就是類的內(nèi)部數(shù)據(jù)操作細節(jié)自己完成较幌,不允許外部干涉;低耦合:僅暴露少量的方法給外部使用白翻。利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起乍炉,使其構(gòu)成一個不可分割的獨立實體,數(shù)據(jù)被保護在抽象數(shù)據(jù)類型的內(nèi)部,盡可能地隱藏內(nèi)部的細節(jié)岛琼,只保留一些對外接口使之與外部發(fā)生聯(lián)系底循。系統(tǒng)的其他部分只有通過包裹在數(shù)據(jù)外面的被授權(quán)的操作來與這個抽象數(shù)據(jù)類型交流與交互。也就是說衷恭,用戶無需知道對象內(nèi)部方法的實現(xiàn)細節(jié),但可以根據(jù)對象提供的外部接口(對象名和參數(shù))訪問該對象纯续。

作用

a)随珠、實現(xiàn)了專業(yè)的分工。將能實現(xiàn)某一特定功能的代碼封裝成一個獨立的實體后猬错,各程序員可以在需要的時候調(diào)用窗看,從而實現(xiàn)了專業(yè)的分工,即工作中的分模塊、分功能開發(fā)倦炒。
b)显沈、隱藏信息,實現(xiàn)細節(jié)逢唤。通過控制訪問權(quán)限可以將可以將不想讓客戶端程序員看到的信息隱藏起來拉讯,如某客戶的銀行的密碼需要保密,只能對該客戶開發(fā)權(quán)限鳖藕。

javabean

規(guī)則

在編寫 javabean 中的有一些常用的規(guī)則如:
1)魔慷、屬性盡可能私有化 private
2)、訪問器: setter 與 getter 訪問器 >private 著恩,一般 public 居多 setterXxx: 存儲> 與 getterXxx: 查看

代碼

public class Person {  //姓名 
        private String name;   //年齡 
    private int age;  //性別 
    private boolean sex; 

?   public Person() { 
?    } 

?   //setter與getter 
?    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 boolean isSex() { 
         return sex; 
    } 

    public void setSex(boolean sex) { 
         this.sex = sex; 
    } 

}

經(jīng)典MVC思想

概述

MVC是一種分層思想院尔,一種設(shè)計模式。

M:Model層(模型層 )

處理數(shù)據(jù)喉誊、業(yè)務(wù)邀摆,再把處理后的數(shù)據(jù)提供給視圖層

V:View層(視圖層)

為用戶展示數(shù)據(jù),是數(shù)據(jù)最直觀的體現(xiàn)伍茄。

C:Controller層(業(yè)務(wù)邏輯層)

接收界面層的數(shù)據(jù)栋盹,對接受到的數(shù)據(jù)進行封裝和類型轉(zhuǎn)換。
調(diào)用模型層的服務(wù)進行業(yè)務(wù)邏輯的處理敷矫。
調(diào)用合適的視圖去渲染數(shù)據(jù)贞盯。

優(yōu)點

  • 減少代碼量,提升性能(效率)沪饺;
  • 提高代碼的擴展性(需求改動躏敢,無需改動太多的代碼)
  • 遵循高內(nèi)聚、低耦合的原則

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pZvJ4SlB-1609312950192)(/1581945749553.png)]

權(quán)限修飾符

public: 一覽無遺整葡;

protected:子承父業(yè) (兒子自己使用)件余;

default :家庭和睦;

private :占為已有

面向?qū)ο?多態(tài)性

女朋友把我?guī)У郊遥赡改镆豢刺淦鳎偭搜≡瓉硎窍瘛霸緜ァ保?/p>

概述

多態(tài) polymorphism,主要是用來實現(xiàn)動態(tài)聯(lián)編的端壳,換句話說告丢,就是程序的最終狀態(tài)只有 在執(zhí)行過程中才被決定而非在編譯期間就決定了。這對于大型系統(tǒng)來說能提高系統(tǒng)的靈活性和擴展性损谦。

java中如何實現(xiàn)多態(tài)?使用多態(tài)的好處?

引用變量的兩種類型: ? 編譯時類型(模糊一點岖免,一般是一個父類)

? ? 由聲明時的類型決定。

? ? 運行時類型(運行時照捡,具體是哪個子類就是哪個子類)

? ? 由實際對應(yīng)的對象類型決定颅湘。

多態(tài)的存在要有3個必要條件:要有繼承,要有方法重寫栗精,父類引用指向子類對象

代碼

這里沒有寫

引用數(shù)據(jù)類型的類型轉(zhuǎn)換

? 子類轉(zhuǎn)換為父類:自動轉(zhuǎn)換

? 上轉(zhuǎn)型對象不能操作子類新增的成員變量和方法闯参。

? 上轉(zhuǎn)型對象可以操作子類繼承或重寫的成員變量和方法

? 如果子類重寫了父類的某個方法,上轉(zhuǎn)型對象調(diào)用該方法時悲立,是調(diào)用的重寫方法鹿寨。

? 父類轉(zhuǎn)換為子類:強制轉(zhuǎn)換

(絕不是做手術(shù),而是父類的真面目就是一個子類薪夕,否則會出現(xiàn)類型轉(zhuǎn)換錯誤

抽象類

概述

使用了關(guān)鍵詞 abstract 聲明的類叫作”抽象類”释移。

抽象類是對抽象的世界建模,是作為父類使用的寥殖。比如: 請求出一個圖形的面積玩讳? 這是你的思考究竟是什么圖形?這個圖形太抽象了嚼贡?是三角形還是原型熏纯?圖形怎么求面積?這個時候就可以把圖形定義為抽象類粤策。

幾個要點

  • 抽象方法和抽象類均必須用abstract來修飾樟澜。
  • 抽象方法沒有方法體,只需要聲明不需實現(xiàn)叮盘。
  • 有抽象方法的類只能定義能抽象類 秩贰。
  • 相反抽象類里面的方法不一定全是抽象方法,也可能沒有抽象方法柔吼。
  • 抽象類可以包含屬性毒费、方法、構(gòu)造方法愈魏。
  • 抽象類不能實例化觅玻,及不能用new來實例化抽象類想际,只能用來被子類調(diào)用。
  • 抽象類只能用來繼承溪厘。
  • 抽象方法必須被子類實現(xiàn)胡本。抽象類的子類必須覆蓋所有的抽象方法才能被實例化,否則還是抽 象類畸悬。

代碼

這里沒有寫

接口

概述

? 接口(interface ),比“抽象類”還“抽象”的“抽象類”侧甫,可以更加規(guī)范的對子類進行約束。全面地專 業(yè)地實現(xiàn)了:規(guī)范和具體實現(xiàn)的分離

如何定義

? 格式:

? ? [訪問修飾符] interface 接口名 [extends 父接口1蹋宦,父接口2…] {

? ? 常量定義 //總是public static final

? ? 方法定義 //總是:public abstract ?

? }

如何實現(xiàn)

  • 子類通過implements來實現(xiàn)接口中的規(guī)范
  • 接口不能創(chuàng)建實例披粟,但是可用于聲明引用變量類型。
  • 一個類實現(xiàn)了接口妆档,必須實現(xiàn)接口中所有的方法僻爽,并且這些方法只能是public的虫碉。
  • Java的類只支持單繼承贾惦,接口支持多繼承

空接口

只是給 JVM 的一種標識而已,就是 JVM 的通行證。
1)敦捧、java.lang.Cloneable :不是所有的對象都可以被克隆 否則CloneNotSupportedException
2)须板、java.io.Serializable

實際開發(fā)中,一個業(yè)務(wù)邏輯處理類永遠不要去繼承一個實現(xiàn)好的類兢卵,要么繼承抽象類习瑰,要么實現(xiàn)接口,優(yōu)先使用接口秽荤,避免單繼承的局限 :abstract class表示的是"is a"關(guān)系甜奄,interface表示的是"like a"關(guān)系

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窃款,隨后出現(xiàn)的幾起案子课兄,更是在濱河造成了極大的恐慌,老刑警劉巖晨继,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烟阐,死亡現(xiàn)場離奇詭異,居然都是意外死亡紊扬,警方通過查閱死者的電腦和手機蜒茄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來餐屎,“玉大人檀葛,你說我怎么就攤上這事「顾酰” “怎么了驻谆?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵卵凑,是天一觀的道長。 經(jīng)常有香客問我胜臊,道長勺卢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任象对,我火速辦了婚禮黑忱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勒魔。我一直安慰自己甫煞,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布冠绢。 她就那樣靜靜地躺著抚吠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弟胀。 梳的紋絲不亂的頭發(fā)上楷力,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音孵户,去河邊找鬼萧朝。 笑死,一個胖子當著我的面吹牛夏哭,可吹牛的內(nèi)容都是我干的检柬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竖配,長吁一口氣:“原來是場噩夢啊……” “哼何址!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起进胯,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤用爪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后龄减,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體项钮,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年希停,在試婚紗的時候發(fā)現(xiàn)自己被綠了烁巫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宠能,死狀恐怖亚隙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情违崇,我是刑警寧澤阿弃,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布诊霹,位于F島的核電站,受9級特大地震影響渣淳,放射性物質(zhì)發(fā)生泄漏脾还。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一入愧、第九天 我趴在偏房一處隱蔽的房頂上張望鄙漏。 院中可真熱鬧,春花似錦棺蛛、人聲如沸怔蚌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桦踊。三九已至,卻和暖如春终畅,著一層夾襖步出監(jiān)牢的瞬間籍胯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工声离, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芒炼,地道東北人瘫怜。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓术徊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鲸湃。 傳聞我的和親對象是個殘疾皇子赠涮,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容