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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三次学JAVA再学不好就吃翔(part37)--接口概述

發布時間:2023/12/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三次学JAVA再学不好就吃翔(part37)--接口概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


文章目錄

    • 面向對象
      • 接口
        • 接口的概述及其特點
        • 接口的成員特點


面向對象


接口


接口的概述及其特點


  • 接口的概述
    • 從狹義的角度講就是指java中的interface
    • 從廣義的角度講,對外提供的規則都是接口
  • 接口的特點
    • 接口用關鍵字interface表示:interface 接口名 {}
    • 實現接口用implements表示:class 類名 implements 接口名 {}
    • 接口不能實例化
    • 接口的子類可以是抽象類,也可以是具體類,是具體類時,需要重寫所有抽象方法
    • 接口是公共的,它的成員變量和成員方法都是公共的(public)

  • 舉個例子
class InterfaceTest1 {public static void main(String[] args) {Inter i = new Demo(); //父類引用指向子類對象i.print();} }interface Inter {public abstract void print(); //接口中的方法都是抽象的}class Demo implements Inter {public void print() {System.out.println("Print");} }

輸出:

Print

接口的成員特點


  • 成員變量
    • 只能是常量,并且是靜態的且公共的,默認修飾符:public static final
  • 構造方法
    • 接口沒有構造方法
  • 成員方法
    • 接口中的方法都是抽象的,默認修飾符:public abstract

  • 舉個例子(成員變量默認為常量)
class InterfaceTest1 {public static void main(String[] args) {Inter i = new Demo(); //父類引用指向子類對象i.print();} }interface Inter {int num = 10;}class Demo implements Inter {public void print() {num = 20;System.out.println(num);} }

報錯信息:

---------- javac ---------- InterfaceTest1.java:4: 錯誤: 找不到符號i.print();^符號: 方法 print()位置: 類型為Inter的變量 i InterfaceTest1.java:16: 錯誤: 無法為最終變量num分配值num = 20;^ 2 個錯誤Output completed (3 sec consumed) - Normal Termination

因為在接口中,我們的成員變量會被默認為常量,所以,我們無法改變,如果改變它就會報錯。上述代碼就相當于:

class InterfaceTest1 {public static void main(String[] args) {Inter i = new Demo(); //父類引用指向子類對象i.print();} }interface Inter {final int num = 10;}class Demo implements Inter {public void print() {num = 20;System.out.println(num);} }
  • 舉個例子(成員變量是靜態的,可以通過類名調用)
class InterfaceTest1 {public static void main(String[] args) {System.out.println(Inter.num);} }interface Inter {static final int num = 10;}class Demo implements Inter {public void print() {System.out.println(num);} }

輸出:

10

同時接口是公共的,所以在成員變量前我們可以加上public關鍵字(public static final int num = 10; ),這三個關鍵字的擺放沒有順序,可以隨意給出。


  • 舉個例子(接口中沒有構造方法)
class InterfaceTest1 {public static void main(String[] args) {} }interface Inter {static final int num = 10;publi Inter() {};}class Demo implements Inter {public void print() {System.out.println(num);} }

報錯:

---------- javac ---------- InterfaceTest1.java:14: 錯誤: 找不到符號publi Inter() {};^符號: 類 publi位置: 接口 Inter InterfaceTest1.java:14: 錯誤: 接口抽象方法不能帶有主體publi Inter() {};^ InterfaceTest1.java:18: 錯誤: Demo不是抽象的, 并且未覆蓋Inter中的抽象方法Inter() class Demo implements Inter { ^ 3 個錯誤Output completed (3 sec consumed) - Normal Termination

接口中沒有構造方法。但是它的子類Demo在初始化時,要調用父類的構造方法,這是怎么實現的呢?

實際上,接口Inter并不能算是Demo真正的父親,最多是養父。Inter的子類Demo有自己真正的父類,這個例子中,我們的Demo子類繼承的是Object類,Object類才是Demo類真正的父類,Demo類初始化時,調用的父類構造方法是Object類的構造方法。

上面的代碼也可以這樣寫:

class InterfaceTest1 {public static void main(String[] args) {} }interface Inter {static final int num = 10;publi Inter() {};}class Demo extends Object implements Inter {public void print() {System.out.println(num);}public Demo() {super();} }
  • 舉個例子(接口中的成員方法只能是抽象的)
class InterfaceTest1 {public static void main(String[] args) {} }interface Inter {static final int num = 10;public void print() {System.out.println("非抽象方法");}}class Demo extends Object implements Inter {public void print() {System.out.println(num);} }

報錯:

---------- javac ---------- InterfaceTest1.java:9: 錯誤: 接口抽象方法不能帶有主體public void print() {^ 1 個錯誤Output completed (3 sec consumed) - Normal Termination

總結

以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part37)--接口概述的全部內容,希望文章能夠幫你解決所遇到的問題。

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