最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java超詳細介紹抽象類與接口的使用

 更新時間:2022年05月10日 10:49:40   作者:xaiobit_hl  
在類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類稱為抽象類,接口是Java中最重要的概念之一,它可以被理解為一種特殊的類,不同的是接口的成員沒有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類和接口,感興趣的朋友一起看看吧

1.抽象類的語法和特性

1.1語法

1.在Java中,一個類如果被abstract 修飾稱為抽象類,抽象類中被 abstract 修飾的方法稱為抽象方法,抽象方法不用給出具體的實現(xiàn)體。

// 抽象類:被abstract修飾的類
public abstract class Shape { 
    // 抽象方法:被abstract修飾的方法,沒有方法體 
    abstract public void draw(); 
    abstract void calcArea(); 
    // 抽象類也是類,也可以增加普通方法和屬性,也可以包含構(gòu)造方法
    public double getArea() { 
        return area; 
    }
    protected double area; // 面積 
}

1.2特性

1. 抽象類不能直接實例化對象

Shape shape = new Shape(); 
// 編譯出錯 -> 抽象類不能被實例化

2. 抽象方法不能是 private 的

abstract class Shape { 
    abstract private void draw(); 
}
// 編譯出錯 -> 抽象方法不能用private修飾

注意:抽象方法沒有加訪問限定符時,默認(rèn)是public.

3. 抽象方法不能被 final 和 static 修飾,因為抽象方法就是用來被子類重寫的,兩者是”天敵“;

public abstract class Shape { 
    abstract final void methodA(); 
    abstract public static void methodB(); 
}
// 編譯報錯: final和static修飾抽象方法,會出問題,二者屬于”天敵“

4. 抽象類必須被繼承,并且繼承后子類要重寫父類中的抽象方法,否則子類也是抽象類,必須要 使用 abstract 修飾

abstract class Shape {
    abstract void draw();
    abstract public void calcArea();
}
//1.實現(xiàn)抽象方法
class Cycle extends Shape {
    @Override
    void draw() {
        System.out.println("●");
    }
    @Override
    public void calcArea() {
        System.out.println("Π*r*r");
    }
}
//2.不實現(xiàn)抽象父類的抽象方法,但是將子類也定義為抽象類
abstract class Triangle extends Shape {
}

5. 抽象類中不一定包含抽象方法,但是有抽象方法的類一定是抽象類

6. 抽象類中可以有構(gòu)造方法,供子類創(chuàng)建對象時,初始化父類的成員變量

2.接口的語法和使用

2.1語法

1.接口的定義格式與類的定義差不多,只要把class改成interface關(guān)鍵字即可。

public interface IOperation {
    public abstract void method1();
    public void method2();
    abstract void method3();
    void method4();
}

接口名的的注意事項:1.接口的命名一般以大寫的 "I" 開頭;2.接口的名字一般使用形容詞性單詞

推薦:阿里編碼規(guī)范中約定, 接口中的方法和屬性不要加任何修飾符號, 保持代碼的簡潔性。

2.2特性

1.接口不能直接使用,必須要被一個類來 "實現(xiàn)",并且這個類要實現(xiàn)這個接口中的所有抽象方法

public interface IOperation {
    public abstract void method1();
    abstract void method2();
}
class A implements IOperation {
    //如果不重寫接口中的抽象方法,代碼在編譯期間就會報錯
    //如果不想重寫,那么這個類一定是抽象類
    @Override
    public void method1() {
    }
    @Override
    public void method2() {
    }
}

2.接口與接口之間是繼承(extends)關(guān)系,類與接口之間是實現(xiàn)關(guān)系(implements)關(guān)系

public interface IOperation {
}
class A implements IOperation {
}
interface Io extends IOperation {
}

3.接口類型是一種引用類型,不能實例化對象

4.接口中每一個方法都是public的抽象方法, 即接口中的方法會被隱式的指定為 public abstract(只能是public abstract,其他修飾符都會報錯)

public interface IOperation {
    private void method() {
    }
    //編譯報錯
}

5. 接口中的方法是不能在接口中實現(xiàn)的,只能由實現(xiàn)接口的類來實現(xiàn)

public interface IOperation {
   void method();
   //編譯報錯:接口中的方法不能自己實現(xiàn)
   public abstract void A() {
   }
}

6. 重寫接口中方法時,不能使用 default 訪問權(quán)限修飾 7. 接口中可以含有變量,但是接口中的變量會被隱式的指定為 public static final 變量,不能改變

interface IA{
    double a = 3.0; // 默認(rèn)被:final public static修飾
}
public class TestDemo {
    public static void main(String[] args) {
        System.out.println(IA.a); // 可以直接通過接口名訪問,說明是靜態(tài)的
        //編譯報錯
        IA.a = 2.0; // 說明brand具有final屬性
    }
}

8. 接口中不能有靜態(tài)代碼塊和構(gòu)造方法

interface USB {
    // 編譯失敗:接口中不能有構(gòu)造方法
    public USB(){
    }
    {} // 編譯失敗:接口中不能有實例代碼塊
    void openDevice();
    void closeDevice();
}

到此這篇關(guān)于Java超詳細介紹抽象類與接口的使用的文章就介紹到這了,更多相關(guān)Java抽象類與接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Controller層和Service層的類報錯問題及解決方案

    關(guān)于Controller層和Service層的類報錯問題及解決方案

    這篇文章主要介紹了關(guān)于Controller層和Service層的類報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java實現(xiàn)微信紅包分配規(guī)則

    Java實現(xiàn)微信紅包分配規(guī)則

    這篇文章主要為大家詳細介紹了Java實現(xiàn)仿微信紅包分配規(guī)則,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 淺析Java中局部變量與成員變量同名解決技巧

    淺析Java中局部變量與成員變量同名解決技巧

    在剛開始學(xué)習(xí)Java的時候,就了解了Java基礎(chǔ)中的變量,雖然知道這個以后會經(jīng)常用到,但沒想到了基本語法這里,竟然又冒出來了成員變量和局部變量。變來變?nèi)ヌ菀鬃屓烁銜灹?,今天我們就挑揀出來梳理一下?/div> 2016-07-07
  • Java編程實現(xiàn)計算兩個日期的月份差實例代碼

    Java編程實現(xiàn)計算兩個日期的月份差實例代碼

    這篇文章主要介紹了Java編程實現(xiàn)計算兩個日期的月份差實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 用Java實現(xiàn)簡單畫板功能

    用Java實現(xiàn)簡單畫板功能

    這篇文章主要為大家詳細介紹了用Java實現(xiàn)簡單畫板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 解決配置Feign時報錯PathVariable annotation was empty on param 0.

    解決配置Feign時報錯PathVariable annotation was empty

    在配置Feign客戶端時,如果遇到`@PathVariable`注解為空的問題,是因為在聲明接口方法時沒有為`@PathVariable`注解提供`value`屬性,解決方法是為`@PathVariable`注解添加`value`屬性,這樣就可以避免報錯,并成功啟動Feign客戶端
    2024-11-11
  • Idea 搭建Spring源碼環(huán)境的超詳細教程

    Idea 搭建Spring源碼環(huán)境的超詳細教程

    這篇文章主要介紹了Idea 搭建Spring源碼環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java序列化和反序列化示例介紹

    Java序列化和反序列化示例介紹

    大家好,本篇文章主要講的是Java序列化和反序列化示例介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • java實現(xiàn)讀取txt文件并以在每行以空格取數(shù)據(jù)

    java實現(xiàn)讀取txt文件并以在每行以空格取數(shù)據(jù)

    今天小編就為大家分享一篇java實現(xiàn)讀取txt文件并以在每行以空格取數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • java 抽象類與接口的區(qū)別總結(jié)

    java 抽象類與接口的區(qū)別總結(jié)

    這篇文章主要介紹了java 抽象類與接口的區(qū)別總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

乳山市| 金门县| 绥棱县| 天等县| 七台河市| 剑阁县| 灵寿县| 大新县| 扎兰屯市| 寻甸| 成安县| 长葛市| 四平市| 定兴县| 大丰市| 双牌县| 芜湖县| 沁水县| 双牌县| 峨眉山市| 清河县| 孝昌县| 南木林县| 邮箱| 名山县| 封开县| 青田县| 长葛市| 泰宁县| 金山区| 镇江市| 正定县| 新和县| 麻城市| 苏尼特右旗| 伊金霍洛旗| 万全县| 新兴县| 繁峙县| 蒙阴县| 二手房|