普通類:只有具體實現
抽象類:具體實現和規範(抽象方法)都有!
介面:只有規範! 自己無法寫方法,專業的約束!約束和實現分離:面向介面程式設計~
示例:
父類
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.介面...