欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java接口繼承和使用接口操作示例

 更新時(shí)間:2019年09月25日 11:28:48   作者:cakincqm  
這篇文章主要介紹了Java接口繼承和使用接口操作,結(jié)合具體實(shí)例形式分析了Java接口繼承與使用的相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java接口繼承和使用接口操作。分享給大家供大家參考,具體如下:

一 接口的繼承

1 點(diǎn)睛

接口支持多繼承,一個(gè)接口可以有多個(gè)父接口,子接口擴(kuò)展某個(gè)父接口,將會(huì)獲得父接口里定義的所有抽象方法、常量。

一個(gè)接口繼承多個(gè)父接口時(shí),多個(gè)父接口排在extends關(guān)鍵字之后。

2 代碼

interface interfaceA
{
  int PROP_A = 5;
  void testA();
}
interface interfaceB
{
  int PROP_B = 6;
  void testB();
}
interface interfaceC extends interfaceA, interfaceB
{
  int PROP_C = 7;
  void testC();
}
public class InterfaceExtendsTest
{
  public static void main(String[] args)
  {
   System.out.println(interfaceC.PROP_A);
   System.out.println(interfaceC.PROP_B);
   System.out.println(interfaceC.PROP_C);
  }
}

3 運(yùn)行

5
6
7

4 說明

interfaceC接口繼承了 interfaceA和 interfaceB,所以 interfaceC中獲得了它們的常量,因此在main()方法中看到通過 interfaceC來訪問PROP_A、PROP_B、PROP_C常量。

二 使用接口

1 點(diǎn)睛

接口不能用于創(chuàng)建實(shí)例,但接口可以用于聲明引用類型變量。但這個(gè)引用類型的變量必須引用到其實(shí)現(xiàn)類的對(duì)象。接口的主要用途就是被實(shí)現(xiàn)類實(shí)現(xiàn)。接口主要有如下用途。

  • 定義變量,也可用于進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
  • 調(diào)用接口中定義的常量。
  • 被其他類實(shí)現(xiàn)。

一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,繼承使用extends關(guān)鍵字,實(shí)現(xiàn)則使用implements關(guān)鍵字。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這是Java為單繼承靈活性不足所做的補(bǔ)充。

一個(gè)類實(shí)現(xiàn)一個(gè)或多個(gè)接口之后,這個(gè)類必須完全實(shí)現(xiàn)這些接口里所定義的全部抽象方法(也就是重寫這些抽象方法);否則,該類將保留從父接口那里繼承到的抽象方法,該類也必須定義成抽象類。

2 代碼

interface Output
{
  // 接口里定義的成員變量只能是常量
  int MAX_CACHE_LINE = 50;
  // 接口里定義的普通方法只能是public的抽象方法
  void out();
  void getData( String msg );
  // 接口中定義默認(rèn)方法,需要使用default修飾
  default void print( String... msgs )
  {
   for (String msg : msgs)
   {
     System.out.println(msg);
   }
  }
  // 接口中定義默認(rèn)方法,需要使用default修飾
  default void test()
  {
   System.out.println("默認(rèn)的test()方法");
  }
  // 接口中定義類方法、需要使用static修飾
  static String staticTest()
  {
   return "Class method";
  }
}
// 定義一個(gè)Product接口
interface Product
{
  int getProduceTime();
}
// 讓Printer類實(shí)現(xiàn)Output和Product接口
public class Printer implements Output , Product
{
  private String[] printData
   = new String[MAX_CACHE_LINE];
  // 用以記錄當(dāng)前需打印的作業(yè)數(shù)
  private int dataNum = 0;
  public void out()
  {
   // 只要還有作業(yè),繼續(xù)打印
   while(dataNum > 0)
   {
     System.out.println("打印機(jī)打?。? + printData[0]);
     // 把作業(yè)隊(duì)列整體前移一位,并將剩下的作業(yè)數(shù)減1
     System.arraycopy(printData , 1
      , printData, 0, --dataNum);
   }
  }
  public void getData(String msg)
  {
   if (dataNum >= MAX_CACHE_LINE)
   {
     System.out.println("輸出隊(duì)列已滿,添加失敗");
   }
   else
   {
     // 把打印數(shù)據(jù)添加到隊(duì)列里,已保存數(shù)據(jù)的數(shù)量加1。
     printData[dataNum++] = msg;
   }
  }
  public int getProduceTime()
  {
   return 45;
  }
  public static void main(String[] args)
  {
   // 創(chuàng)建一個(gè)Printer對(duì)象,當(dāng)成Output使用
   Output o = new Printer();
   o.getData("輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)");
   o.getData("瘋狂Java講義");
   o.out();
   o.getData("瘋狂Android講義");
   o.getData("瘋狂Ajax講義");
   o.out();
   // 調(diào)用Output接口中定義的默認(rèn)方法
   o.print("孫悟空" , "豬八戒" , "白骨精");
   o.test();
   // 創(chuàng)建一個(gè)Printer對(duì)象,當(dāng)成Product使用
   Product p = new Printer();
   System.out.println(p.getProduceTime());
   // 所有接口類型的引用變量都可直接賦給Object類型的變量
   Object obj = p;
  }
}

3 運(yùn)行

打印機(jī)打印:輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)
打印機(jī)打?。函偪馢ava講義
打印機(jī)打?。函偪馎ndroid講義
打印機(jī)打?。函偪馎jax講義
孫悟空
豬八戒
白骨精
默認(rèn)的test()方法
45

4 說明

Printer 實(shí)現(xiàn)了 Output 接口和 Product接口,因此Pinter對(duì)象即可以直接賦給Output變量,也可直接賦給Product變量。仿佛Printer類既是Output類的子類,也是Product類的子類,這就是Java提供的模擬多繼承。

Printer實(shí)現(xiàn)了Output接口,即可獲取Output接口中定義的print()方法和test()兩個(gè)默認(rèn)方法,因此Printer實(shí)例可以直接調(diào)用這兩個(gè)默認(rèn)方法。

接口不能顯示繼承任何類,但所有接口類型的引用變量都可以直接賦給Object類型的引用變量。

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Java如何實(shí)現(xiàn)N叉樹數(shù)據(jù)結(jié)構(gòu)

    Java如何實(shí)現(xiàn)N叉樹數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要介紹了Java如何實(shí)現(xiàn)N叉樹數(shù)據(jù)結(jié)構(gòu)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring Boot框架中的@Conditional注解示例詳解

    Spring Boot框架中的@Conditional注解示例詳解

    這篇文章主要介紹了Spring Boot框架中的@Conditional系列注解,@ConditionalOnProperty注解的作用是解析application.yml/application.properties 里的配置生成條件來生效,也是與@Configuration注解一起使用,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友一起看看吧
    2022-09-09
  • 詳解Java中雪花算法的實(shí)現(xiàn)

    詳解Java中雪花算法的實(shí)現(xiàn)

    雪花算法是一種分布式的id生成算法。原理是將long分成若干個(gè)區(qū)段分別管理。本文將利用Java簡(jiǎn)單的實(shí)現(xiàn)雪花算法,感興趣的可以了解一下
    2022-12-12
  • 深入理解Java中觀察者模式與委托的對(duì)比

    深入理解Java中觀察者模式與委托的對(duì)比

    這篇文章主要介紹了Java中觀察者模式與委托的對(duì)比,觀察者模式:定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)象,委托的實(shí)現(xiàn)簡(jiǎn)單來講就是用反射來實(shí)現(xiàn)的,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 詳解Java的位操作符

    詳解Java的位操作符

    位操作就是對(duì)這些數(shù)據(jù)進(jìn)行基本的操作。如果基本類型是char、byte或者short類型的數(shù)值進(jìn)行移位處理,那么會(huì)轉(zhuǎn)化成int類型,再進(jìn)行移位的處理
    2017-09-09
  • MySQL數(shù)據(jù)文件直接通過拷貝備份與恢復(fù)的操作方法

    MySQL數(shù)據(jù)文件直接通過拷貝備份與恢復(fù)的操作方法

    這篇文章主要介紹了MySQL數(shù)據(jù)文件直接通過拷貝備份與恢復(fù)的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 淺析Java數(shù)據(jù)庫操作工具包jOOQ的使用

    淺析Java數(shù)據(jù)庫操作工具包jOOQ的使用

    jOOQ?是一個(gè)輕量級(jí)的?Java?ORM(對(duì)象關(guān)系映射)框架,可用來構(gòu)建復(fù)雜的?SQL?查詢,這篇文章主要來和大家介紹一下jOOQ的使用,需要的可以參考下
    2024-04-04
  • 如何在mybatis中向BLOB字段批量插入數(shù)據(jù)

    如何在mybatis中向BLOB字段批量插入數(shù)據(jù)

    這篇文章主要介紹了如何在mybatis中向BLOB字段批量插入數(shù)據(jù)的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-10-10
  • Spring Cloud Feign報(bào)錯(cuò)問題解決

    Spring Cloud Feign報(bào)錯(cuò)問題解決

    這篇文章主要介紹了Spring Cloud Feign報(bào)錯(cuò)問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot實(shí)現(xiàn)自定義線程池的方法

    SpringBoot實(shí)現(xiàn)自定義線程池的方法

    這篇文章主要介紹了SpringBoot中的自定義線程池解析,實(shí)現(xiàn)自定義線程池重寫spring默認(rèn)線程池的方式使用的時(shí)候,只需要加@Async注解就可以,不用去聲明線程池類,需要的朋友可以參考下
    2023-11-11

最新評(píng)論