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

Java基礎(chǔ)教程之接口的繼承與抽象類

 更新時間:2014年09月01日 10:42:43   投稿:junjie  
這篇文章主要介紹了Java基礎(chǔ)教程之接口的繼承與抽象類,本文介紹了接口繼承、接口的多重繼承以及抽象類的知識,需要的朋友可以參考下

在實(shí)施接口中,我們利用interface語法,將interface從類定義中獨(dú)立出來,構(gòu)成一個主體。interface為類提供了接口規(guī)范。

在繼承中,我們?yōu)榱颂岣叱绦虻目蓮?fù)用性,引入的繼承機(jī)制。當(dāng)時的繼承是基于類的。interface接口同樣可以繼承,以拓展原interface。

接口繼承

接口繼承(inheritance)與類繼承很類似,就是以被繼承的interface為基礎(chǔ),增添新增的接口方法原型。比如,我們以Cup作為原interface:

復(fù)制代碼 代碼如下:

interface Cup {
    void addWater(int w);
    void drinkWater(int w);
}

我們在繼承Cup的基礎(chǔ)上,定義一個新的有刻度的杯子的接口,MetricCup

接口如下:

復(fù)制代碼 代碼如下:

interface MetricCup extends Cup
{
    int WaterContent();
}

我們增添了一個新的方法原型WaterContent(),這個方法返回一個整數(shù)(水量)。

interface的多重繼承

在Java類的繼承中,一個衍生類只能有一個基類。也就是說,一個類不能同時繼承多于一個的類。在Java中,interface可以同時繼承多于一個interface,這叫做多重繼承(multiple inheritance)。

比如我們有下面一個Player接口:

復(fù)制代碼 代碼如下:

interface Player
{
    void play();
}

我們新增一個MusicCup的接口。它既有Cup接口,又有Player接口,并增加一個display()方法原型。

復(fù)制代碼 代碼如下:

interface MusicCup extends Cup, Player
{
    void display();
}

(如何使用interface,見實(shí)施接口)

抽象類

在生活中,我們會有一些很抽象的概念。這些抽象的概念往往是許多類的集合,比如:

1.糧食 (可以是玉米、小麥、大米)
2.圖形 (可以是三角形、圓形、正方形)

再比如,我們之前舉出了例子:

1.人類 (可以是男人、女人)

在組織這樣的關(guān)系時,我們可以使用繼承,比如:

根據(jù)我們的常識:

1."Food類的對象"的說法是抽象的。這樣一個對象應(yīng)該是屬于Corn, Rice, Wheat子類中的一個。

2.Food類有eat()方法 (食物可以吃)。然而,這樣的一個動作是抽象的。糧食的具體吃法是不同的。比如Corn需要剝皮吃,Wheat要磨成面粉吃。我們需要在每個類中覆蓋Food類的eat()方法。

抽象與具體

Java中提供了抽象類(abstract class)的語法,用于說明類及其方法的抽象性。比如:

復(fù)制代碼 代碼如下:

abstract class Food {
    public abstract void eat();
    public void happyFood();
    {
        System.out.println("Good! Eat Me!");
    }
}

類中的方法可以聲明為abstract,比如上面的eat()。這時,我們不需要具體定義方法,只需要提供該方法的原型。這與接口類似。當(dāng)我們在比如Corn類中繼承該類時,需要提供eat()方法的具體定義。

類中的另一個方法happyFood()并不是

當(dāng)一個類中出現(xiàn)abstract方法時,這個類的聲明必須加上abstract關(guān)鍵字,否則Java將報錯。一個abstract類不能用于創(chuàng)建對象。

抽象類的繼承

我們可以像繼承類那樣繼承一個抽象類。我們必須用完整的方法定義,來覆蓋抽象類中的抽象方法,否則,衍生類依然是一個抽象類。

抽象類的定義中可以有數(shù)據(jù)成員。數(shù)據(jù)成員的繼承與正常類的繼承相同。

總結(jié)

interface繼承,多重繼承

abstract method, abstract類

相關(guān)文章

  • Java HashTable的原理與實(shí)現(xiàn)

    Java HashTable的原理與實(shí)現(xiàn)

    Java中的HashTable是一種線程安全的哈希表實(shí)現(xiàn),它可以高效地存儲和快速查找數(shù)據(jù),本文將介紹Java中的HashTable的實(shí)現(xiàn)原理、常用方法和測試用例,需要的小伙伴可以參考一下
    2023-09-09
  • Spring?中?PageHelper?不生效問題及解決方法

    Spring?中?PageHelper?不生效問題及解決方法

    這篇文章主要介紹了Spring?中?PageHelper?不生效問題,使用這個插件時要注意版本的問題,不同的版本可能 PageHelper 不會生效,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 在MyBatis-Plus中關(guān)閉SQL日志輸出的方法

    在MyBatis-Plus中關(guān)閉SQL日志輸出的方法

    在使用MyBatis-Plus開發(fā)Java應(yīng)用程序時,隨著項(xiàng)目的復(fù)雜性提升,SQL日志的輸出可能會導(dǎo)致日志文件變得龐大,影響系統(tǒng)的性能和可維護(hù)性,本文將介紹如何在Spring Boot項(xiàng)目中關(guān)閉MyBatis-Plus的SQL日志輸出,感興趣的朋友一起看看吧
    2025-04-04
  • 一文深入理解Java中的深拷貝機(jī)制

    一文深入理解Java中的深拷貝機(jī)制

    在Java編程中,我們經(jīng)常需要處理對象的復(fù)制問題,深拷貝和淺拷貝是兩種常見的復(fù)制方式,它們在內(nèi)存管理和對象引用方面存在不同特點(diǎn),本文將帶大家深入探究Java中的深拷貝機(jī)制,需要的朋友可以參考下
    2023-09-09
  • java如何判斷時間段是否交叉重疊

    java如何判斷時間段是否交叉重疊

    這篇文章主要介紹了java如何判斷時間段是否交叉重疊問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • jsoup如何爬取圖片到本地

    jsoup如何爬取圖片到本地

    這篇文章主要為大家詳細(xì)介紹了jsoup如何爬取圖片到本地,jsoup爬取網(wǎng)站信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Mybatis plus邏輯刪除失敗的BUG操作

    Mybatis plus邏輯刪除失敗的BUG操作

    這篇文章主要介紹了Mybatis plus邏輯刪除失敗的BUG操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解SpringMVC在IDEA中的第一個程序

    詳解SpringMVC在IDEA中的第一個程序

    Spring MVC 屬于Spring Framework的一部分,是一種Spring框架內(nèi)置的MVC的實(shí)現(xiàn)。這篇文章主要介紹了SpringMVC在IDEA中的第一個程序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • java 序列化與反序列化的實(shí)例詳解

    java 序列化與反序列化的實(shí)例詳解

    這篇文章主要介紹了java 序列化與反序列化的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Spring測試 其實(shí)很簡單

    Spring測試 其實(shí)很簡單

    這篇文章主要為大家詳細(xì)介紹了Spring測試,其實(shí)很簡單,揭開集成測試神秘的面紗,感興趣的小伙伴們可以參考一下
    2016-07-07

最新評論