为什么是抽象的或口类的创造,或者当我们应该使用的抽象或接口类?

有帮助吗?

解决方案

接口用于当只想声明哪些方法和成员的一类必须具备的。任何人都实现该接口将必须声明和实现由接口列出的方法。

如果你也想拥有一个默认的实现,使用抽象类。扩展抽象类的任何类必须实现只有它的抽象方法和成员,以及将有抽象类,您可以覆盖或没有其他方法的一些默认的实现。

- 编辑 - 忘了提及,埃里克提醒我

最后,你可以根据需要实现任意多的接口,但只有继承一个类(即它抽象的或没有)。记住这一点,在选择之前。

其他提示

关键的区别是,可以在一个类implement多个接口,但只extend单个抽象类。这是因为一个抽象类也可以定义存储数据字段,而一个接口不能。

这是抽象类是一类,有ATLEAST一个抽象方法,或者你也可以让你所有的方法为抽象。显然,它不能被实例化。你必须从一个抽象类继承和实现在继承类的抽象方法(即,类延伸的抽象类)。

接口是不是在所有的类(所以不调用它们接口类)。接口定义的方法签名,没有任何执行。另外接口没有成员字段。如果要实现在一个类的接口,你必须通过该接口提供的所有方法的实现。

是有意义的定义一些东西的一般化的API,可以具有完全不同的实现。抽象类为主要做相同的类更有用,但有一些细微的差别。您可以结合这两种方法。

一个很好的例子是集合框架在Java类库的。你有接口列表,定义列表怎么也得表现。一些实现例如ArrayList和LinkedList。由于他们的行为类似,即以同样的两个在抽象类AbstactList实现的东西,既继承了这一点。

请参阅接口基本上是“合同”。当你定义一个接口要定义一个合同。其中抽象类延伸,接口被实现。

让我们考虑一个例子。

public interface Friend {
void hello();
}

现在您已定义的合同,其表示,其中希望实现Friend任何类需要提供方法的定义hello()

下面是一种实施:

public class myFriend implements Friend {
public void hello()
println("Done");
}

现在myFriend已经履行合同。现在的问题是:应该在哪里使用接口

接口帮助您定义必须实现的行为。假设你有一个A级定义的某些功能。你想要其他类使用,只有当他们定义了特定的行为(方法),这个类的功能。你执行在接口的术语此限制。

SamuelCarrijo 似乎已经回答了这个问题。

此外Java,一些框架需要接口的工作。我想(说) 动态代理, 或一些客户/服务器代理的框架。这是因为他们使用自我反省的对象确定方法实现通过该接口的实施对象。所以有时你必须要实现一个接口,一个对象,也许,你通常不会打扰。

注意到 原因的接口是具体的Java。

抽象类,当你正在构建继承层次使用。然而,大多数的继承层次不宜过“深”(即继承层次太多)。许多面向对象设计的书籍将有利于在继承接口(一本书我读了曾经引用开发者的话说,“继承[面向对象]功能,您将不执行单最酷”),因为这允许类被分配行为“由合同”,其中该合同的接口。

值得注意的是samuelcarrijo的答案 - 如果你想有一个方法的默认实现,你就必须使用有一个具体的实施方法,给它一个默认实现的抽象类。此默认实现在子类中重写。

希望这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top