java抽象類和接口定義與用法詳解
本文實例講述了java抽象類和接口定義與用法。分享給大家供大家參考,具體如下:
抽象類
抽象類定義
只約定類所具有的抽象行為,沒有具體實現(xiàn)相應(yīng)行為。
語法格式
abstract class 類名{
常量;
變量;
構(gòu)造();
訪問修飾符abstract 返回類型 方法名;//抽象方法
普通方法;
靜態(tài)方法();
}
應(yīng)用場景
1.不適合創(chuàng)建對象。
2.有些功能沒有必要實現(xiàn),有不同的子類實現(xiàn)。
3.每次使用的都是子類的對象。
4.為所有的子類提供了一個模板,所有的子類都是在此模板的基礎(chǔ)之上添加和修改完善功能而創(chuàng)建出來的。
注意事項
1.不能創(chuàng)建對象。
2.必須由子類繼承使用。
3.普通的子類必須實現(xiàn)抽象類中的所有抽象方法。(抽象子類除外)
4.構(gòu)造方法不能是抽象的。
5.abstract不能和private、final、static一起使用。
6.抽象類中的抽象方法不是必須的,可以寫,可以不寫。
abstract class TrafficTool1{
int count;
public abstract void run() ;//抽象方法
}
class Car2 extends TrafficTool1{
@Override
public void run() {
System.out.println("汽車在公路上行駛");
}
}
class Tube2 extends TrafficTool1{
public void run() {
System.out.println("地鐵在 地下行駛");
}
}
public class TestTrafficTool1 {
public static void main(String[] args) {
Car2 c2 = new Car2();
c2.run();
Tube2 t2 = new Tube2();
t2.run();
}
}
接口
定義接口
提供了一組規(guī)則。
訪問修飾符 interface 接口名{//所有成員都是public
常量;//public static final
抽象方法;//public abstract
默認(rèn)方法;//public default 類型 名(){實現(xiàn)}
靜態(tài)方法;//public static 類型 名(){實現(xiàn)}
//不能被 實現(xiàn)類繼承
//不能被 子接口繼承
靜態(tài)內(nèi)部類型;//(public static 內(nèi)部類,內(nèi)部接口,內(nèi)部枚舉)
}
接口特點
1.接口不能創(chuàng)建對象。
2.由實現(xiàn)類來實現(xiàn)功能。
3.普通的實現(xiàn)類,必須實現(xiàn)接口中的所有抽象方法。(抽象實現(xiàn)類除外)
4.實現(xiàn)類可以實現(xiàn)多個接口的功能。
5.接口之間可以繼承,而且可以多繼承。
接口注意事項
1.靜態(tài)方法不能被繼承。靜態(tài)方法用 接口名.靜態(tài)方法名調(diào)用
2.實現(xiàn)多個接口方法名相同的處理
接口在開發(fā)中,提供了一組規(guī)則和規(guī)范,一旦發(fā)布了,就不要更改了。
解決問題:用default
interface WebBank{
void webService();//網(wǎng)上支付功能
//public abstract void webService();
default void fd() {}
}
//實現(xiàn)類
class Jingdong implements WebBank{
@Override
public void webService() {
System.out.println("京東實現(xiàn)了支付功能");
}
public void show() {}
}
class Taobao implements WebBank{
public void webService() {
System.out.println("淘寶實現(xiàn)了支付功能");
}
}
public class TestWebBank {
public static void main(String[] args) {
WebBank web = new Jingdong();
web.webService();
web.fd();
// web.show();//屏蔽
/* Jingdong jd = new Jingdong();
jd.webService();
Taobao tb = new Taobao();
tb.webService();*/
}
}
接口和抽象類的異同
相同
1.都不能創(chuàng)建對象
2.都需要用子類或?qū)崿F(xiàn)類來繼承或?qū)崿F(xiàn)。
3.都可以包含抽象方法。
4.普通的子類或?qū)崿F(xiàn)類需要實現(xiàn)所有的抽象方法(抽象的除外)。
不同
1.抽象類是個類,是個模板類,為子類提供模板,是個半成品。
2.接口是提供了一個功能,是一個規(guī)范。
3.抽象類 子類是單一繼承。
4.實現(xiàn)類 可以實現(xiàn)多個接口。
5.接口之間可以多繼承。
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
java 使用poi 導(dǎo)入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟
這篇文章主要介紹了java 使用poi 導(dǎo)入Excel 數(shù)據(jù)到數(shù)據(jù)庫的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12
Java中@ConfigurationProperties實現(xiàn)自定義配置綁定問題分析
這篇文章主要介紹了@ConfigurationProperties實現(xiàn)自定義配置綁定問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
java面向?qū)ο笾畬W(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java面向?qū)ο笾畬W(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03
MybatisPlus分頁查詢與多條件查詢介紹及查詢過程中空值問題的解決
mybatisplus是個很好用的插件,相信小伙伴們都知道,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實現(xiàn)分頁查詢與多條件查詢介紹及查詢過程中空值問題的相關(guān)資料,需要的朋友可以參考下2022-10-10

