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

Java接口操作(繼承父類并實現(xiàn)多個接口)

 更新時間:2020年10月07日 11:21:36   作者:Valentino112358  
這篇文章主要介紹了Java接口操作(繼承父類并實現(xiàn)多個接口),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

/*

使用接口的時候,需要注意:

1. 接口是沒有靜態(tài)代碼塊或者構(gòu)造方法的。 2. 一個類的直接父類是唯一的,但是一個類可以同時實現(xiàn)多個接口。

格式:

public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB {
  // 覆蓋重寫所有抽象方法
}

3. 如果實現(xiàn)類所實現(xiàn)的多個接口當中,存在重復的抽象方法,那么只需要覆蓋重寫一次即可。

A接口

package cn.itcast.day10.demo02; 
public interface MyInterfaceA {
 
  // 錯誤寫法!接口不能有靜態(tài)代碼塊
//  static {
//
//  }
 
  // 錯誤寫法!接口不能有構(gòu)造方法
//  public MyInterfaceA() {
//
//  }
 
  public abstract void methodA();
 
  public abstract void methodAbs();
 
  public default void methodDefault() {
    System.out.println("默認方法AAA");
  } 
}

B接口

package cn.itcast.day10.demo02; 
public interface MyInterfaceB {
 
  // 錯誤寫法!接口不能有靜態(tài)代碼塊
//  static {
//
//  }
 
  // 錯誤寫法!接口不能有構(gòu)造方法
//  public MyInterfaceA() {
//
//  }
 
  public abstract void methodB();
 
  public abstract void methodAbs();
 
  public default void methodDefault() {
    System.out.println("默認方法BBB");
  } 
}

實現(xiàn)類有多個接口

package cn.itcast.day10.demo02; 
public class MyInterfaceImpl /*extends Object*/ implements MyInterfaceA, MyInterfaceB {
 
  @Override
  public void methodA() {
    System.out.println("覆蓋重寫了A方法");
  } 
 
  @Override
  public void methodB() {
    System.out.println("覆蓋重寫了B方法");
  }
 
  @Override
  public void methodAbs() {
    System.out.println("覆蓋重寫了AB接口都有的抽象方法");
  }  // A B 都有 覆蓋一次
 
  @Override
  public void methodDefault() {
    System.out.println("對多個接口當中沖突的默認方法進行了覆蓋重寫");
  }
}

只覆蓋重寫了一次。

4. 如果實現(xiàn)類沒有覆蓋重寫所有接口當中的所有抽象方法,那么實現(xiàn)類就必須是一個抽象類。

package cn.itcast.day10.demo02; 
public abstract class MyInterfaceAbstract implements MyInterfaceA, MyInterfaceB {
  @Override
  public void methodA() {
 
  }
  // 沒有寫methodB那么實現(xiàn)類是抽象類
  @Override
  public void methodAbs() {
 
  }
 
  @Override
  public void methodDefault() {
 
  } 
}

抽象方法methodB沒有重寫覆蓋,那么實現(xiàn)類成為了抽象類。

5. 如果實現(xiàn)類鎖實現(xiàn)的多個接口當中,存在重復的默認方法,那么實現(xiàn)類一定要對沖突的默認方法進行覆蓋重寫(A,B兩個接口中都寫了默認方法,沖突了)。見3.中實現(xiàn)類中覆蓋重寫了A,B中的兩個默認方法

6. 一個類如果直接父類當中的方法,和接口當中的默認方法產(chǎn)生了沖突,優(yōu)先用父類當中的方法。

Fu類

package cn.itcast.day10.demo02; 
public class Fu {
 
  public void method() {
    System.out.println("父類方法");
  } 
}

MyInterface接口

package cn.itcast.day10.demo02; 
public interface MyInterface {
 
  public default void method() {
    System.out.println("接口的默認方法");
  } 
}

直接父類當中的方法,和接口當中的默認方法產(chǎn)生了沖突。

Zi子類

package cn.itcast.day10.demo02; 
public class Zi extends Fu implements MyInterface {
}

調(diào)用method方法,看哪個優(yōu)先

package cn.itcast.day10.demo02; 
public class Demo01Interface {
 
  public static void main(String[] args) {
    Zi zi = new Zi();
    zi.method();
  } 
}

調(diào)用子類對象的method方法,發(fā)現(xiàn)使用的是父類中的而不是接口中的方法,父類的優(yōu)先級比接口優(yōu)先級更高。

運行結(jié)果:

父類方法

Process finished with exit code 0

*/

補充知識:java從對象開始(類,父類與繼承,抽象,接口)

1、對象(類class)

在程序設(shè)計時,我們往往會接觸到各種形形色色的現(xiàn)實已存在的對象,這些對象都是需要我們在程序中實例化出來進行業(yè)務(wù)操作的。不過從數(shù)量和復雜上講可以說比我們現(xiàn)實中接觸的事物是有過之而無不及的。

2、父類與繼承

當對象類型繁雜數(shù)量繁多時我們就會像生物學上對各種生物進行分門別類,對我們收集到的對象以屬性或者功能又或者其他標準進行分類目。而這些我們最終分出來的各種類目往往在程序中被定義為父類,它是對我們收集到的對象中某些具有相同屬性或者功能又或者其他相似特征的對象集合的總稱。好似一個包含各種文件的文件夾,它本身在程序中并無任何業(yè)務(wù)操作的意義。

不過注意的是在不同情形不同問題域下,由于分類標準不同,父類也會成為某個父類的子類,所以會形成一種樹狀關(guān)系結(jié)構(gòu),父類在關(guān)系結(jié)構(gòu)中與其他對象類并無差別。

分類完成后,現(xiàn)在我們就可以以父類為標準來操作一類對象了。但這時我們對分類好的對象進行實例化會發(fā)現(xiàn)那些相同的屬性功能或者其他相似特征都需要在其對象中重復編寫,像這種程度的分類并不是我們想要的。

于是,我們又給父類賦予新的功能,它不再是單純的對對象進行分類了。我們提取出相同的屬性和功能特征放在父類中,讓我們需要操作的對象僅僅關(guān)注自己特有的屬性和功能特征,其余的屬性和功能特征都可通過繼承父類來擁有。這樣我們就解決了相同屬性功能重復編寫的問題,并且還能對共有屬性功能進行規(guī)范化操作。

3、抽象類

因為父類并無任何業(yè)務(wù)操作意義,我們就對各種父類進行管理為它們添加abstract關(guān)鍵詞,讓它們無法實例化,這樣就避免了實例化對象是不正確的或者某些人分不清具體要操作哪些對象而實例化父類的問題。因為這些父類無法實例化,所以我們把它們稱為——抽象類。通過這樣的設(shè)定我們就會在程序中以抽象類為節(jié)點形成各種層級關(guān)系。

于是我們樹狀關(guān)系機構(gòu)又變成了具有清晰層級關(guān)系的樹狀關(guān)系結(jié)構(gòu)。

4、小結(jié)

父類的提出是進行歸類操作,那么繼承則是去重和規(guī)范化的操作,而抽象在此基礎(chǔ)上又進行了關(guān)系的分層級和類對象實例化操作的規(guī)范。

5、接口

前面說我們對每個對象根據(jù)某種特征進行分類了,但有時我們會因為某些特有目的標準不一樣,有時以屬性分類有時以功能分類,但有些對象可能擁有相同屬性不擁有相同功能,有些對象擁有相同功能不擁有相同屬性。這時我們就會把這些在父類中沒有的屬性或者功能但其他對象又有相識功能或?qū)傩詥为毘槿〕鰜碜鳛榻涌趤頌檫@些對象服務(wù)。

從抽取相同屬性或者功能這點來看,接口實則是對我們已分類好具有清晰層級的樹狀關(guān)系結(jié)構(gòu)再次進行一次去重復操作,從而我們的對象從具有清晰層級的樹狀關(guān)系結(jié)構(gòu)變成了更加靈活的網(wǎng)狀形結(jié)構(gòu)。

但是在提取父類分類時我們一般會以相同屬性來進行分類,那么那些不同的功能會單獨提取到接口中,接口和抽象類相似的是都不會進行具體方法功能的實現(xiàn),只是將相同的功能申明好進行規(guī)范化操作。具體實現(xiàn)會具體到對象再進行實現(xiàn)。

對象進行去重再提取后那些因為在不同父類中具有相同功能的對象又以另外一種標準分類到某種接口中了。比如某某對象的某某功能和某某對象的某某功能都是來至于某某接口的。從而我們對對象進行操作又多了一種標準,可以通過判斷是否具有某種功能進行篩選對象進其操作。

6、總結(jié)

從功能點上看接口與(抽象和父類和繼承)的提出都是對我們程序中的對象進行歸類操作,去除那些重復的代碼。并且在接口和抽象類中都是可以對某些屬性和方法功能進行規(guī)范化約束,從而我們在對對象進行業(yè)務(wù)操作中就更加便捷清晰。對象與對象的關(guān)系更加明朗。

以上這篇Java接口操作(繼承父類并實現(xiàn)多個接口)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 搭建架構(gòu)5種方法示例詳解

    SpringBoot 搭建架構(gòu)5種方法示例詳解

    SpringBoot是基于Spring框架的便捷開發(fā)框架,通過約定優(yōu)于配置實現(xiàn)快速構(gòu)建獨立應(yīng)用,文章介紹了五種搭建SpringBoot項目的方法,包括使用IntelliJ IDEA、Spring官網(wǎng)、阿里云官網(wǎng)以及將現(xiàn)有Maven項目轉(zhuǎn)換為SpringBoot項目,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考

    基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考

    這篇文章主要介紹了基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot整合MyBatis Plus實現(xiàn)基本CRUD與高級功能

    SpringBoot整合MyBatis Plus實現(xiàn)基本CRUD與高級功能

    Spring Boot是一款用于快速構(gòu)建Spring應(yīng)用程序的框架,而MyBatis Plus是MyBatis的增強工具,本文將詳細介紹如何在Spring Boot項目中整合MyBatis Plus,并展示其基本CRUD功能以及高級功能的實現(xiàn)方式,需要的朋友可以參考下
    2024-02-02
  • 關(guān)于Mybatis-Plus?Update更新策略問題

    關(guān)于Mybatis-Plus?Update更新策略問題

    這篇文章主要介紹了關(guān)于Mybatis-Plus?Update更新策略問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • JAVA創(chuàng)建和銷毀對象的方法

    JAVA創(chuàng)建和銷毀對象的方法

    本篇文章主要介紹了JAVA創(chuàng)建和銷毀對象的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java深入淺出掌握SpringBoot之MVC自動配置原理篇

    Java深入淺出掌握SpringBoot之MVC自動配置原理篇

    在進行項目編寫前,我們還需要知道一個東西,就是SpringBoot對我們的SpringMVC還做了哪些配置,包括如何擴展,如何定制,只有把這些都搞清楚了,我們在之后使用才會更加得心應(yīng)手
    2021-10-10
  • 如何在Netty中注解使用Service或者Mapper

    如何在Netty中注解使用Service或者Mapper

    這篇文章主要介紹了如何在Netty中注解使用Service或者Mapper,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot程序打包失敗(.jar中沒有主清單屬性)

    SpringBoot程序打包失敗(.jar中沒有主清單屬性)

    在學習SpringBoot,打包SpringBoot程序后,在cmd運行出現(xiàn)了 某某某.jar中沒有注清單屬性,本文就來介紹一下原因以及解決方法,感興趣的可以了解一下
    2023-06-06
  • 2023最新版IDEA創(chuàng)建javaweb項目的詳細圖文教程

    2023最新版IDEA創(chuàng)建javaweb項目的詳細圖文教程

    之前用的社區(qū)版IDEA無法部署JavaWeb項目,于是裝了一個最新版的IDEA,下面這篇文章主要給大家介紹了關(guān)于2023最新版IDEA創(chuàng)建javaweb項目的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Selenium處理select標簽的下拉框

    Selenium處理select標簽的下拉框

    Selenium是一個開源的和便攜式的自動化軟件測試工具,用于測試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運行。接下來通過本文給大家介紹Selenium處理select標簽的下拉框,需要的朋友一起學習吧
    2016-04-04

最新評論

北京市| 马龙县| 全椒县| 阆中市| 昭通市| 万盛区| 榆社县| 鹰潭市| 嫩江县| 长寿区| 兴义市| 馆陶县| 锡林浩特市| 曲松县| 七台河市| 灵川县| 盘山县| 梁平县| 江北区| 明星| 唐河县| 黄大仙区| 五峰| 通州市| 北票市| 深州市| 张家口市| 北辰区| 拉萨市| 周至县| 陆良县| 潢川县| 巴林左旗| 乌鲁木齐市| 大同市| 渝中区| 舒城县| 米林县| 鄂伦春自治旗| 宽城| 普安县|