java抽象類別和接口

高洛峰
發布: 2016-10-31 14:11:08
原創
1561 人瀏覽過

 一、抽象類別

    我們知道,物件是透過類別來產生的,但是並非所有的類別都可以描述特定的物件。

    如果一個類別中不包含足夠的資訊來描述特定的對象,就成為了抽象類別。抽象類別是對一類有著相同特徵,但細節上卻有著不同表現的物件的抽象。例如,鳥類都會叫,但是不同的鳥叫法一定是不同的,可以抽像出「叫」這個概念。

    定義下面一個鳥類:

public abstract class Bird {
    private String color;
 
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public Bird(){
    }
    public abstract void sing();//鸣叫
}
//喜鹊
class  Magpie extends Bird{
public void sing() {
System.out.println("I can sing in a whisper. ");
}
}
登入後複製

抽象類別特徵:

(1)抽象類別用abstract關鍵字修飾

(2)抽象類別中的抽象方法用abstract進行修飾,沒有方法(

(2)抽象類別中的抽象方法用abstract實現具體方法(具體方法)。

(3)抽象類別可以包含非抽象方法

(4)抽象類別可以不包含抽象方法(設計成抽象類別就沒什麼意義了吧。。。),但包含抽象方法的類別一定是抽象類別

(5)抽象類別本質也是類,只能單繼承

(6)抽象類別不能實例化,不能new。我們前面說它不描述特定的對象,肯定也不能實例化了

(7)抽象類別可以有實例變數和建構方法

 

二、介面

    介面是一組方法特徵的集合,是介面

    介面是一組方法特徵的集合,是介面

    介面是一組方法特徵的集合,是介面

    介面是一組方法特徵的集合,是介面

    介面是一組方法特徵的集合,是介面

  契約,規定了你可以做什麼。軟體設計過程中要依賴抽象,而非具體實作。

    像我們電腦上的usb接口,無論你是硬碟、u盤、還是手機,只要你實現了usb規定的接口,便能夠聯通電腦。

    上面抽象類別的例子中,我想加入一個「飛」的功能,考慮到並非所有的鳥都會飛,例如:企鵝,鴕鳥,鴨子等等,該怎麼辦呢?

    修改抽象類別肯定是不合適的:1.違反開閉原則,2:會使得所有的子類別都繼承到「飛」這一功能,我們會看到滿天的鴨子在飛了^_^ 。

    我們可以定義下面一個介面:

public interface IFly {
void fly();
 }
登入後複製

//喜鵲可以實現IBird中的介面:

class  Magpie extends Bird implements IFly {
public void sing() {
System.out.println("I can sing in a whisper. ");
}
        public void fly(){
            System.out.println("我会飞了!");
        }
}
登入後複製
    喜鵲實現了IFly中的介面,終於可以飛起來了。

    那如果需要增加鳥類一個游泳的功能呢?自己去想。 。 。

介面的特徵:

    (1)修飾符:public,abstract,default(不寫)

    (2)關鍵字:interface

    (2)關鍵字:interface

  。

    (4)介面中的方法預設都是public abstract的,實作類別中必須使用public修飾。

    (5)介面中的所有方法都必須在實作類別(抽象類別除外)中實作。

    (6)介面中的變數預設為public static final的。

    (7)一個類別可以實現多個介面。

 

    三、應用場景

    1)抽象類別所體現的是「is a」的關係,如果某一些類別的實作有共同點,而個人化的方法則由各個子類別去實現。 🎜🎜    2)介面體現的是「like a」的關係,表現的是不同類別物件在行為上的抽象。例如飛機和鳥都會飛,可以抽離出飛的接口,但他們非同類。 🎜🎜    3)在軟體設計中,當你需要介面與實作分離,封裝變化的時候,面向介面程式設計顯得特別重要。 🎜🎜    例如Ioc思想,客戶端不關心你具體是什麼類,具體對象由容器來注入。 🎜🎜    再比如兩個系統交互,良好的設計是雙方提供接口,不關心內部實現,減少耦合性的同時,封裝了變化。 🎜🎜    許多設計原則、設計想法以及設計模式都體現出介面程式設計的重要性:開閉原則,介面隔離,依賴倒置,適配器模式等等。 🎜🎜🎜🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!