Java面向?qū)ο?/h2>
面向?qū)ο?png

面向?qū)ο?/h1>

封裝

Java語(yǔ)言中,訪問(wèn)修飾符可以出現(xiàn)在類(lèi),成員變量,成員方法以及構(gòu)造方法前,用來(lái)控制權(quán)限。Java提供了4種級(jí)別的訪問(wèn)控制 public 權(quán)限最寬 修飾的類(lèi),屬性,方法不僅可以跨類(lèi)還可以跨包訪問(wèn) private 權(quán)限最狹隘 修飾的類(lèi),屬性,方法只能被該類(lèi)的對(duì)象訪問(wèn),即使是其子類(lèi)也不能訪問(wèn)! 做的很絕-.- protected 介于public和private之間 修飾的類(lèi),屬性,方法能被該類(lèi)的對(duì)象,本包,子類(lèi)訪問(wèn)(即使沒(méi)和父類(lèi)在同一包中) default 默認(rèn)訪問(wèn)模式,只向同一個(gè)包中的類(lèi)公開(kāi),即同包訪問(wèn)。

this和super關(guān)鍵字

1、this關(guān)鍵字代表當(dāng)前對(duì)象 2、super可以理解為是指向自己超(父)類(lèi)對(duì)象的一個(gè)指針,而這個(gè)超類(lèi)指的是離自己最近的一個(gè)父類(lèi)

this與super對(duì)比 this.屬性 操作當(dāng)前對(duì)象的屬性 this.方法 調(diào)用當(dāng)前對(duì)象的方法 引用構(gòu)造函數(shù):調(diào)用本類(lèi)中另一種形式的構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語(yǔ)句)。 普通的直接引用:與this類(lèi)似,super相當(dāng)于是指向當(dāng)前對(duì)象的父類(lèi),這樣就可以用super.xxx來(lái)引用父類(lèi)的成員。 子類(lèi)中的成員變量或方法與父類(lèi)中的成員變量或方法名同名時(shí),表示調(diào)用父類(lèi)的成員 引用構(gòu)造函數(shù):調(diào)用父類(lèi)中的某一個(gè)構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語(yǔ)句)。默認(rèn)在構(gòu)造函數(shù)第一條語(yǔ)句是“super();”,無(wú)論寫(xiě)與否。 super(參數(shù)):調(diào)用基類(lèi)中的某一個(gè)構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語(yǔ)句) this(參數(shù)):調(diào)用本類(lèi)中另一種形成的構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語(yǔ)句) 調(diào)用super()必須寫(xiě)在子類(lèi)構(gòu)造方法的第一行,否則編譯不通過(guò)。每個(gè)子類(lèi)構(gòu)造方法的第一條語(yǔ)句,都是隱含地調(diào)用 super(),如果父類(lèi)沒(méi)有這種形式的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。 super() 和 this() 類(lèi)似,區(qū)別是,super() 從子類(lèi)中調(diào)用父類(lèi)的構(gòu)造方法,this() 在同一類(lèi)內(nèi)調(diào)用其它方法。 super() 和 this() 均需放在構(gòu)造方法內(nèi)第一行。 盡管可以用this調(diào)用一個(gè)構(gòu)造器,但卻不能調(diào)用兩個(gè)。 this 和 super 不能同時(shí)出現(xiàn)在一個(gè)構(gòu)造函數(shù)里面,因?yàn)閠his必然會(huì)調(diào)用其它的構(gòu)造函數(shù),其它的構(gòu)造函數(shù)必然也會(huì)有 super 語(yǔ)句的存在,所以在同一個(gè)構(gòu)造函數(shù)里面有相同的語(yǔ)句,就失去了語(yǔ)句的意義,編譯器也不會(huì)通過(guò)。 this() 和 super() 都指的是對(duì)象,所以,均不可以在 static 環(huán)境中使用。包括:static 變量,static 方法,static 語(yǔ)句塊。 從本質(zhì)上講,this 是一個(gè)指向本對(duì)象的指針, 然而 super 是一個(gè) Java 關(guān)鍵字。

繼承

抽象類(lèi)(is-a)
抽象類(lèi)有構(gòu)造方法,但是不能直接用來(lái)直接創(chuàng)建對(duì)象
抽象類(lèi)必須有抽象方法(1個(gè)或者多個(gè)),可以有普通方法
匿名內(nèi)部類(lèi)

1. 是一次性的

2. 專(zhuān)注于抽象類(lèi)內(nèi)部抽象方法的實(shí)現(xiàn)

方法的重寫(xiě)唯一可以改變的就是訪問(wèn)控制權(quán)限(子類(lèi)比父類(lèi)的訪問(wèn)權(quán)限大)---》里氏替換原則

重寫(xiě)

參數(shù)列表必須完全與被重寫(xiě)的方法參數(shù)列表相同。

返回的類(lèi)型必須與被重寫(xiě)的方法的返回類(lèi)型相同(Java1.5 版本之前返回值類(lèi)型必須一樣,之后的 Java 版本放寬了限制,返回值類(lèi)型必須小于或者等于父類(lèi)方法的返回值類(lèi)型)。

訪問(wèn)權(quán)限不能比父類(lèi)中被重寫(xiě)方法的訪問(wèn)權(quán)限更低(public>protected>default>private)。

重寫(xiě)方法一定不能拋出新的檢査異?;蛘弑缺恢貙?xiě)方法聲明更加寬泛的檢査型異常。例如,父類(lèi)的一個(gè)方法聲明了一個(gè)檢査異常 IOException,在重寫(xiě)這個(gè)方法時(shí)就不能拋出 Exception,只能拋出 IOException 的子類(lèi)異常,可以拋出非檢査異常。

聲明為 static 的方法不能被重寫(xiě),但是能夠再次聲明。

構(gòu)造方法不能被重寫(xiě)。

接口(is -like)

所有的方法都是抽象方法(默認(rèn)修飾符是public abstract)

方法修飾符可以是default ,static(1. 可以實(shí)現(xiàn)在接口中有方法體,2. 抽象方法是實(shí)現(xiàn)在普通類(lèi)中沒(méi)有方法體),

接口沒(méi)有構(gòu)造方法

接口的屬性是public static final ,必須給賦初值;

當(dāng)兩個(gè)接口中含有相同的方法(相同的返回時(shí)),在類(lèi)同時(shí)實(shí)現(xiàn)這個(gè)接口的時(shí)候,在類(lèi)中重寫(xiě)的方法是共享同一個(gè)方法

接口可以同時(shí)繼承(extends)多個(gè)接口

final關(guān)鍵字

修飾的屬性(只能在創(chuàng)建的時(shí)候或者構(gòu)造方法的時(shí)候初始化),必須為其初始化,若在定義的時(shí)候,沒(méi)有為其賦值可以在構(gòu)造方法用(this.屬性 = 值)賦值,一經(jīng)賦值不可更改

修飾方法:不能被重寫(xiě)

修飾的類(lèi)型:不能被繼承

abstart不能與final連用

static關(guān)鍵字

修飾屬性

修飾方法

靜態(tài)方法內(nèi)部,不能使用this關(guān)鍵字,靜態(tài)內(nèi)部不能出現(xiàn)動(dòng)態(tài)的調(diào)用

靜態(tài)代碼塊

類(lèi)加載的時(shí)候執(zhí)行。實(shí)例化多個(gè)對(duì)象只執(zhí)行一次,最小化 只要加載的東西滿足條件就執(zhí)行

修飾類(lèi)型(內(nèi)部類(lèi))

修飾的內(nèi)部類(lèi)不能直接訪問(wèn)外部類(lèi)的非靜態(tài)屬性,創(chuàng)建靜態(tài)內(nèi)部類(lèi)時(shí)候可以直接new對(duì)象,不需要?jiǎng)?chuàng)建外部類(lèi)

static元數(shù)據(jù)區(qū)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容