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