抽象类

时间:2011-07-26 08:13:43

标签: java

  

可能重复:
  Java: interface / abstract classes / abstract method

我有一个带有4个方法的抽象类。所有这些方法都是抽象的。 我的抽象类是否等同于接口?

public abstract class ABC{
  abstract void f1();
  abstract void f2();
  abstract void f3();
  abstract void f4();
 }

有人可以解释一下吗?

5 个答案:

答案 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#程序员,但认为这些差异仍然适用)。

接口不是继承的,而是抽象类。如果您的编程语言不支持多重继承,那么这将非常重要。

接口不能包含代码,只能包含签名,但抽象类可以包含代码。

访问级别:私有,受保护,公共不能在界面中声明,但在抽象类中声明。