我有一个带有4个方法的抽象类。所有这些方法都是抽象的。 我的抽象类是否等同于接口?
public abstract class ABC{
abstract void f1();
abstract void f2();
abstract void f3();
abstract void f4();
}
有人可以解释一下吗?
答案 0 :(得分:1)
没有。一个类可以“实现”多个接口,但只能“扩展”一个超类,包括抽象类。
答案 1 :(得分:1)
AFAIK,Java不像C ++那样支持多重继承。但它支持多种实现(一个类可以实现多个接口)。
因此,当您从ABC
继承时,您将无法从任何其他类继承。但是,如果你把它变成一个界面 - 你可以这样做。
答案 2 :(得分:1)
粗略地说不。
一个类一次只能implements
一个接口,但你可以extend
只是一个抽象类。
答案 3 :(得分:1)
抽象类与接口的不同之处在于抽象类可能包含方法的具体实现,而接口可能不包含。
例如,抽象类具有这样的具体方法是合法的:
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
类包含一些对子类有用的实现。
答案 4 :(得分:0)
抽象类和接口之间存在很多差异。我可以列举一些(我不是java程序员而是C#程序员,但认为这些差异仍然适用)。
接口不是继承的,而是抽象类。如果您的编程语言不支持多重继承,那么这将非常重要。
接口不能包含代码,只能包含签名,但抽象类可以包含代码。
访问级别:私有,受保护,公共不能在界面中声明,但在抽象类中声明。