我有4個抽象類methods.All這些方法都是抽象的。 我的抽象類是否等同於一個接口?
public abstract class ABC{
abstract void f1();
abstract void f2();
abstract void f3();
abstract void f4();
}
任何人都可以解釋,如果它不是?
我有4個抽象類methods.All這些方法都是抽象的。 我的抽象類是否等同於一個接口?
public abstract class ABC{
abstract void f1();
abstract void f2();
abstract void f3();
abstract void f4();
}
任何人都可以解釋,如果它不是?
不。一個類可以「實現」多個接口,但只能「擴展」一個超類,包括抽象類。
AFAIK,Java不支持像C++那樣的多重繼承。但是它支持多種實現(一個類可以實現多個接口)。
因此,當您從ABC
繼承時,您將無法繼承其他任何類。但是,如果你把它變成一個界面 - 你可以做到這一點。
粗略地說,編號爲 一個類可以比一次一個接口多一個implements
,但是您可以只抽象類extend
。
抽象類不同於接口,因爲抽象類可能包含方法的具體實現,而接口可能不包含。
例如,它是合法的抽象類有這樣的具體方法:
public class Abstractclass{
abstract void f1();
/**
* this is a concrete method with implementation
*/
void f2(){
System.out.println("do something");
}
}
但對於接口,所有的方法都隱含抽象。你不能有具體的方法:
public interface InterfaceClass{
void f2();
void f3();
}
的interface
就像一個合同,沒有實現開發商。它基本上指定what
。然後開發者實現這個接口來定義how
。
一個abstract
類包含一些對子類有用的實現。
抽象類和接口之間存在不少差異。我可以舉幾個例子(我不是Java程序員,但C#程序員,但認爲這些差異仍然適用)。
一個接口不是繼承的,而是一個抽象類。如果你的編程語言不支持多重繼承,這將是重要的。
接口不能包含代碼,只有簽名,但抽象類可以包含代碼。
訪問級別:private,protected,public不能在接口中聲明,但在抽象類中聲明。
這已經討論了很多次。只是[很多...的一個鏈接](http://stackoverflow.com/questions/2124951/java-interface-abstract-classes-abstract-method) – Jacob