抽象類和介面

2021-10-22 20:40:32 字數 3241 閱讀 3190

普通類:只有具體實現

抽象類:具體實現和規範(抽象方法)都有!

介面:只有規範! 自己無法寫方法,專業的約束!約束和實現分離:面向介面程式設計~

示例:

父類

package oop.demo08;

// abstract 抽象類:類 extends:單繼承~ (介面可以多繼承)

public

abstract

class

action

子類

package oop.demo08;

// 抽象類的所有方法,繼承了它的子類,都必須要實現它的抽象方法~除非子類也是抽象類

public

class

aextends

action

}

物件導向的精髓,是對物件的抽象,最能體現這一點的就是介面。

宣告類的關鍵字是class,宣告介面的關鍵字是inte***ce

介面(inte***ce)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的。介面中的方法定義預設為

public abstract型別,介面中的成員變數型別預設為public static final。

注意:

(1)介面中的*類欄位全部為常量,*定義的方法全部為抽象方法。

(2)抽象類:extends

(3)類,可以實現介面 (類名 implements 介面名)

(4) 實現了介面的類,就需要重寫介面中的方法

(5)多繼承,利用介面實現多繼承, implements 可以實現多個介面

(6)介面不能被例項化,介面中沒有構造方法

介面1:userservice

package oop.demo09;

// inte***ce 定義的關鍵字,介面都需要有實現類

public

inte***ce

userservice

介面2:userservice

package oop.demo09;

public

inte***ce

timeservice

在類中實現介面

package oop.demo09;

// 抽象類:extends

// 類,可以實現介面 (類名 implements 介面名)

// 實現了介面的類,就需要重寫介面中的方法

// 多繼承,利用介面實現多繼承

public

class

userserviceimpl

implements

userservice

,timeservice

@override

public

void

delete

(string name)

@override

public

void

uodate

(string name)

@override

public

void

query

(string name)

@override

public

void

timer()

}

下面比較一下兩者的語法 :

抽象類可以有構造方法,介面中不能有構造方法。

抽象類中可以有普通成員變數,介面中沒有普通成員變數

抽象類中可以包含非抽象的普通方法,介面中的所有方法必須都是抽象的,不能有非抽象的普通方法。

抽象類中的抽象方法的訪問型別可以是public,protected(預設型別,雖然eclipse下不報錯,但應該也不行),但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。

抽象類中可以包含靜態方法,介面中不能包含靜態方法

抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static final型別,並且預設即為public static final型別。

乙個類可以實現多個介面,但只能繼承乙個抽象類。

下面接著再說說兩者在應用上的區別:

介面更多的是在系統架構設計方法發揮作用,主要用於定義模組之間的通訊契約。而抽象類在**實現方面發揮作用,可以實現**的重用,例如,模板方法設計模式是抽象類的乙個典型應用,假設某個專案的所有servlet類都要用相同的方式進行許可權判斷、記錄訪問日誌和處理異常,那麼就可以定義乙個抽象的基類,讓所有的servlet都繼承這個抽象基類,在抽象基類的service方法中完成許可權判斷、記錄訪問日誌和處理異常的**,在各個子類中只是完成各自的業務邏輯**,偽**如下:

//注意訪問許可權定義成protected,顯得既專業,又嚴謹,因為它是專門給子類用的

}public

class

myservlet1

extends

baseservlet

}父類方法中間的某段**不確定,留給子類幹,就用模板方法設計模式。

備註:這道題的思路是先從總體解釋抽象類和介面的基本概念,然後再比較兩者的語法細節,最後再說兩者的應用區別。比較兩者語法細節區別的條理是:先從乙個類中的構造方法、普通成員變數和方法(包括抽象方法),靜態變數和方法,繼承性等6個方面逐一去比較回答,接著從第三者繼承的角度的回答,特別是最後用了乙個典型的例子來展現自己深厚的技術功底。

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...