日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java学习笔记_抽象/接口

發布時間:2023/12/15 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习笔记_抽象/接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

抽象方法:就是加上abstract關鍵字,然后去掉大括號,直接分號結束
抽象類:抽象方法所在的類,必須是抽象類。在class前面寫上abstract

如何使用抽象類和抽象方法

  • 不能直接創建new抽象類對象
  • 必須用一個子類來繼承抽象父類
  • 子類必須覆蓋重寫抽象父類當中所有的抽象方法
    覆蓋重寫(實現):子類去掉抽象方法abstract關鍵字,然后補上方法體大括號
  • 創建子類對象進行使用
  • public abstract class Animal{//這是一個抽象方法,代表吃東西,但是具體吃什么不確定public abstract void eat(); } public class Cat extends Animal{System.out.println(“貓吃魚”)} public static void main(String[] args){//Animal animal = new Animal();//錯誤寫法,不能直接創建抽象類對象Cat cat = new Cat();cat.eat(); }

    接口就是多個類的公共規范
    接口是一種引用數據類型,最重要的內容就是其中的抽象方法

    如何定義一個接口的格式
    public interface 接口名稱{
    //接口內容
    }

    接口中包含的內容:
    常量、抽象方法、默認方法、靜態方法、私有方法

    在任何版本的Java中,接口都能定義抽象方法
    格式:
    public abstract 返回值類型 方法名稱(參數列表);

    注意事項:

  • 接口當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract
  • 這兩個關鍵字修飾符,可以選擇性省略。
  • 方法的三要素,可以隨意定義
  • public interface MyInterfaceAbstract{public abstract void methodAbs1();abstract void methodAbs2();public void methodAbs3();void methodAbs4();}

    接口的使用步驟

  • 接口不能直接使用,必須有個“實現類”來“實現”該接口
    格式:
    public class 實現類名稱 implements 接口名稱{
    //…
    }

  • 接口的實現類必須覆蓋重寫(實現)接口中所有的抽象方法
    實現:去掉abstract關鍵字,加上方法體大括號

  • 創建實現類的對象,進行使用

  • 注意事項:
    如果實現類并沒有覆蓋重寫接口中所有的抽象方法,那么這個實現類自己就必須是抽象類

    public class Demo{public void main(String[] args){//MyInterfaceAbtract inter = new MyInterfaceAbstract();//錯誤寫法,不能直接new接口對象使用//創建實現類的對象使用MyInterfaceAbstractImp impl = new MyInterfaceAbstractImpl();impl.methodAbs1();impl.methodAbs2();} }
  • 接口的默認方法,可以通過接口事項類對象,直接調用
  • 接口的默認方法,也可以被接口事項類進行覆蓋重寫
  • public class Demo{public static void(String[] args){//創建了實現類對象MyInterfaceDefaultA a = new MyInterfaceDefaultA();a.methodAbs();//調用抽象方法,實際運行的是右側實現類//調用默認方法,如果實現類當中沒有,會向上找接口a.methodDefault();//這是新添加的默認方法MyInterfaceDefaultB b = new MyInterfaceDefaultB();b.methodAbs();b.methodDefault();//實現B覆蓋重寫了接口的默認方法} }

    接口里允許定義默認方法
    格式:
    public default 返回值類型 方法名稱(參數列表){
    方法體
    }
    備注:接口當中的默認方法,可以解決接口升級的問題

    public interface MyInterfaceDefault{//抽象方法public abstract void methodAbs();//新添加了一個抽象方法//public abstract void methodAbs2();//新添加的方法,改成默認方法public default void methodDefault(){System.out.println(“這是新添加的默認方法”)} }

    接口當中允許定義靜態方法
    格式:
    public static 返回值類型 方法名稱(參數列表){
    方法體
    }

    提示:就是將abstract或者default換成static即可,帶上方法體

    注意事項:不能通過接口實現類的對象來調用接口當中的靜態方法
    正確用法:通過接口名稱,直接調用其中的靜態方法

    格式:
    接口名稱.靜態方法名(參數);

    public class Demo{public static void main(String[] args){//創建了實現類對象MyInterfaceStaticImpl impl = new MyInterfaceStaticImpl();//錯誤寫法//impl.methodStatic();//直接通過接口名稱調用靜態方法MyInterfaceStatic.methodStatic();} }

    接口當中允許定義私有方法

  • 普通私有方法,解決多個默認方法之間重復代碼問題
    格式:
    private 返回值類型 方法名稱(參數列表){
    方法體
    }

  • 靜態私有方法,解決多個靜態方法之間的重復代碼問題
    格式:
    private static 返回值類型 方法名稱(參數列表){
    方法體
    }

  • public interface MyInterfacePrivateA{public default void methodfault1(){System.out.println(“默認方法1)methodCommon();}public default void methodfault2(){System.out.println(“默認方法2)methodCommon();}public default void methodCommon(){System.out.println(“AAA”);System.out.println(“BBB”);System.out.println(“CCC”);} }

    接口當中也可以定義成員變量,
    但是必須使用public static final三個關鍵字進行修飾
    從效果上看,這其實就是接口的常量
    格式:
    public static final 數據類型 常量名稱 = 數據值
    備注
    一旦使用final關鍵字進行修飾,說明不可改變

    注意事項:

  • 接口當中的常量,可以省略public static final
  • 接口當中的常量,必須進行賦值,不能不賦值
  • 接口中常量的名稱,使用完全大寫的字母,用下劃線進行分隔
  • public interface MyInterfaceConst{//這其實就是一個常量,一旦賦值,不可以修改public static final int NUM_OF_MY_CLASS = 12; } public class Demo{public static void main(String[] args){//訪問接口當中的常量System.out.println(MyInterfaceConst.NUM_OF_MY_CLASS);} }

    繼承父類并實現多個接口
    使用接口時,需要注意:

  • 接口是沒有靜態代碼塊或者構造方法的
  • 一個類的直接父類是唯一的,但是一個類可以同時實現多個接口
    格式:
    public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB{
    //覆蓋重寫所有的抽象方法
    }
  • 如果實現類所實現的多個接口當中,存在重復的抽象方法,那么只需要覆蓋重寫一次即可
  • 如果實現類沒有覆蓋重寫所有接口當中的所有抽象方法,那么實現類就必須是一個抽象類
  • 如果實現類所實現的多個接口當中,存在重復的默認方法,那么實現類一定要對沖突的默認方法進行覆蓋重寫。
  • 一個類如果直接父類當中的方法,和接口當中的默認方法產生了沖突,優先用父類當中的方法。
  • 接口之間的多繼承
    1.類與類之間是單繼承的,直接父類只有一個
    2.類與接口之間是多實現的,一個類可以實現多個接口
    3.接口與接口之間是多繼承的

    注意事項:
    1.多個父接口當中的抽象方法如果重復,沒關系
    2.多個父接口當中的默認方法如果重復,那么子接口必須進行默認方法的覆蓋重寫,而且而且帶著default關鍵字。

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Java学习笔记_抽象/接口的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。