溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在java中定義抽象類和接口

發(fā)布時間:2021-05-10 17:32:03 來源:億速云 閱讀:236 作者:Leah 欄目:編程語言

如何在java中定義抽象類和接口?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

Java可以用來干什么

Java主要應(yīng)用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網(wǎng)頁開發(fā);5. 企業(yè)級應(yīng)用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。

抽象類

抽象類定義

只約定類所具有的抽象行為,沒有具體實(shí)現(xiàn)相應(yīng)行為。

語法格式

abstract class 類名{
 常量;
 變量;
 構(gòu)造();
 訪問修飾符abstract 返回類型 方法名;//抽象方法
 普通方法;
 靜態(tài)方法();
}

應(yīng)用場景

1.不適合創(chuàng)建對象。

2.有些功能沒有必要實(shí)現(xiàn),有不同的子類實(shí)現(xiàn)。

3.每次使用的都是子類的對象。

4.為所有的子類提供了一個模板,所有的子類都是在此模板的基礎(chǔ)之上添加和修改完善功能而創(chuàng)建出來的。

注意事項

1.不能創(chuàng)建對象。

2.必須由子類繼承使用。

3.普通的子類必須實(shí)現(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 類型 名(){實(shí)現(xiàn)}
 靜態(tài)方法;//public static 類型 名(){實(shí)現(xiàn)}
   //不能被 實(shí)現(xiàn)類繼承
   //不能被 子接口繼承
 靜態(tài)內(nèi)部類型;//(public static 內(nèi)部類,內(nèi)部接口,內(nèi)部枚舉)
}

接口特點(diǎn)

1.接口不能創(chuàng)建對象。

2.由實(shí)現(xiàn)類來實(shí)現(xiàn)功能。

3.普通的實(shí)現(xiàn)類,必須實(shí)現(xiàn)接口中的所有抽象方法。(抽象實(shí)現(xiàn)類除外)

4.實(shí)現(xiàn)類可以實(shí)現(xiàn)多個接口的功能。

5.接口之間可以繼承,而且可以多繼承。

接口注意事項

1.靜態(tài)方法不能被繼承。靜態(tài)方法用 接口名.靜態(tài)方法名調(diào)用

2.實(shí)現(xiàn)多個接口方法名相同的處理

接口在開發(fā)中,提供了一組規(guī)則和規(guī)范,一旦發(fā)布了,就不要更改了。

解決問題:用default

interface WebBank{
 void webService();//網(wǎng)上支付功能
 //public abstract void webService();
 default void fd() {}
}
//實(shí)現(xiàn)類
class Jingdong implements WebBank{
 @Override
 public void webService() {
  System.out.println("京東實(shí)現(xiàn)了支付功能");
 }
 public void show() {}
}
class Taobao implements WebBank{
 public void webService() {
  System.out.println("淘寶實(shí)現(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)類需要實(shí)現(xiàn)所有的抽象方法(抽象的除外)。

不同

1.抽象類是個類,是個模板類,為子類提供模板,是個半成品。

2.接口是提供了一個功能,是一個規(guī)范。

3.抽象類 子類是單一繼承。

4.實(shí)現(xiàn)類 可以實(shí)現(xiàn)多個接口。

5.接口之間可以多繼承。

看完上述內(nèi)容,你們掌握如何在java中定義抽象類和接口的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI