我有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