Java基礎10 介面的繼承與抽象類別

來源:互聯網
上載者:User

標籤:

在實施介面中,我們利用interface文法,將interface從類定義中獨立出來,構成一個主體。interface為類提供了介面規範。

在繼承中,我們為了提高程式的可複用性,引入的繼承機制。當時的繼承是基於類的。interface介面同樣可以繼承,以拓展原interface。

 

介面繼承

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

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


我們在繼承Cup的基礎上,定義一個新的有刻度的杯子的介面,MetricCup

介面如下:

interface MetricCup extends Cup{    int WaterContent();}

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

 

interface的多重繼承

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

比如我們有下面一個Player介面:

interface Player{    void play();}

 

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

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

 

(如何使用interface,見實施介面)

 

抽象類別

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

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

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

  • 人類 (可以是男人、女人)

在組織這樣的關係時,我們可以使用繼承,比如:

根據我們的常識:

  • "Food類的對象"的說法是抽象的。這樣一個對象應該是屬於Corn, Rice, Wheat子類中的一個。
  • Food類有eat()方法 (食物可以吃)。然而,這樣的一個動作是抽象的。糧食的具體吃法是不同的。比如Corn需要剝皮吃,Wheat要磨成麵粉吃。我們需要在每個類中覆蓋Food類的eat()方法。

 

抽象與具體

 

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

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

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

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

當一個類中出現abstract方法時,這個類的聲明必須加上abstract關鍵字,否則Java將報錯。一個abstract類不能用於建立對象。

 

抽象類別的繼承

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

抽象類別的定義中可以有資料成員。資料成員的繼承與正常類的繼承相同。

Java中抽象類別和介面的簡單區別

 

1.介面是公開的,裡面不能有私人的方法或變數,是用於讓別人使用的,而抽象類別是可以有私人方法或私人變數的,

2.實現介面的一定要實現介面裡定義的所有方法,而實現抽象類別可以有選擇地重寫需要用到的方法,一般的應用裡,最頂級的是介面,然後是抽象類別實現介面,最後才到具體類實現。

3.介面可以實現多重繼承,而一個類只能繼承一個超類,但可以通過繼承多個介面實現多重繼承,介面還有標識(裡面沒有任何方法,如Remote介面)和資料共用(裡面的變數全是常量)的作用.

 

總結

interface繼承,多重繼承

abstract method, abstract類

Java基礎10 介面的繼承與抽象類別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.