java笔记之抽象类和接口
前言
java筆記之抽象類和接口是開(kāi)發(fā)人員的設(shè)計(jì)工具正文
1.抽象類
客觀存在的一類事物,當(dāng)這類事物都是抽象的,無(wú)法具體的描述。
1)語(yǔ)法:
修飾符 abstract class 類名{
}
2)特點(diǎn):
抽象類是一個(gè)不具體的類
抽象類可以包含不具體的行為
是一個(gè)規(guī)范,用來(lái)約定子類或者小類型的行為
3) 抽象類的特性
抽象類不能進(jìn)行實(shí)例化
使用abstract關(guān)鍵字定義抽象類
抽象類中的抽象方法也需要用abstract修飾,同時(shí)不能存在方法體
抽象類中不一定有抽象方法
有抽象方法的類,一定是抽象類
如果子類繼承了抽象類,那么子類必須實(shí)現(xiàn)抽象類的抽象方法;如果子類繼承了抽象類,而不去實(shí)現(xiàn)抽象類,子類也必須為抽象類
如果抽象類中沒(méi)有定義構(gòu)造器,那么javac會(huì)自動(dòng)加上默認(rèn)構(gòu)造器;如果抽象類中有了有參構(gòu)造器,且沒(méi)聲明無(wú)參構(gòu)造器,那么在子類構(gòu)造器中需要顯式的調(diào)用抽象類的構(gòu)造器。
4)抽象類的使用場(chǎng)景
抽象類用于分析和設(shè)計(jì)的工具
抽象類是一個(gè)規(guī)范,用來(lái)約束子類
5)抽象類與類的區(qū)別:
1)相同點(diǎn):
語(yǔ)法上都要使用class關(guān)鍵字
都包含屬性和方法
都可以進(jìn)行方法的重載
如果沒(méi)有提供構(gòu)造器,那么javac會(huì)自動(dòng)加上
子類都可以重寫(xiě)父類的方法
具體的子類在創(chuàng)建對(duì)象時(shí),都需要調(diào)用父類的構(gòu)造器
都可以定義引用來(lái)指向子類或小類型所創(chuàng)建的對(duì)象(多態(tài))
多可以被抽象類和具體類所繼承
2))不同點(diǎn)
抽象類不能進(jìn)行實(shí)例化
抽象類可涵有抽象的方法
2.javaBean規(guī)范:(針對(duì)實(shí)體類)
是一種編程習(xí)慣。按照此規(guī)范定義出來(lái)的java類使用起來(lái)比較方便。
1)內(nèi)容:
必須有包
必須為屬性提供getter和setter
必須提供無(wú)參構(gòu)造器
實(shí)現(xiàn)序列化(I/O流)
重寫(xiě)hashCode(),eqauls(),toString()
3.接口:
是一種規(guī)范和約束,用來(lái)限定實(shí)現(xiàn)類里面包含的行為
1)目的:
為了解決java單繼承的弊端。同時(shí)區(qū)分出解決問(wèn)題的中心
2)語(yǔ)法:
Interface 接口名{
接口內(nèi)容(常量、抽象方法)
}
注:類實(shí)現(xiàn)接口的語(yǔ)法:
修飾符 class 類名 implements 接口1,接口2{
類體
}
3)接口的特性:
接口不能實(shí)例化(除非是有匿名內(nèi)部類實(shí)現(xiàn)它)
接口中包含的方法全都是抽象方法,屬性均為常量(public static final 數(shù)據(jù)類型 變量名=值)
4)接口可以多繼承接口
語(yǔ)法:
Interface 接口名 extends 接口1,接口2{
接口體
}
5)借口可以定義變量引用指向?qū)崿F(xiàn)類的對(duì)象(接口的多態(tài))
注:接口可以作為變量、參數(shù)和返回值來(lái)引用實(shí)現(xiàn)類的對(duì)象
4.軟件的設(shè)計(jì)原則:
高內(nèi)聚,低耦合
高內(nèi)聚:在類內(nèi)部,關(guān)聯(lián)度越高越好
低耦合:在類與類之間,關(guān)聯(lián)度越低越好
1)實(shí)現(xiàn)方式:
高內(nèi)聚:一個(gè)類只做一件事
低耦合:面向接口編程
注:面向接口編程:
在軟件開(kāi)發(fā)過(guò)程中,在類中調(diào)用另一個(gè)類的方法。他們之間的關(guān)聯(lián)度很高;那么可以使用接口替代類,減低他們之間關(guān)聯(lián)度(可進(jìn)一步采用工廠模式來(lái)屏蔽對(duì)象的創(chuàng)建過(guò)程)
5.面向接口的編程步驟:
1)抽取接口:
注:根據(jù)名詞中存在的相同的行為i,根據(jù)is-a關(guān)系去建立,根據(jù)系統(tǒng)的重點(diǎn)研究對(duì)象來(lái)確定使用繼承(抽象類、類)或?qū)崿F(xiàn)(接口)
2)定義接口:
將使用的行為在接口中定義出來(lái),形成規(guī)范和約束
3)建立實(shí)現(xiàn)類并實(shí)現(xiàn)接口
注:好處,提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性。
總結(jié)
采用接口降低調(diào)用者與被調(diào)用者之間的耦合度:具體做法為,采用接口引用實(shí)現(xiàn)類對(duì)象,也可采用接口引用通過(guò)工廠創(chuàng)建的對(duì)象。
轉(zhuǎn)載于:https://www.cnblogs.com/zhang_kun_nan/p/3636488.html
總結(jié)
以上是生活随笔為你收集整理的java笔记之抽象类和接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Sicily 6768. Log Boo
- 下一篇: 软链接和硬链接的解读