为什么我们使用接口?
当我们实现一个接口时,我们必须为该接口的方法编写定义。那么,需要实现什么接口呢?我们可以直接在类中编写方法。
谢谢 :)
为什么我们使用接口?
当我们实现一个接口时,我们必须为该接口的方法编写定义。那么,需要实现什么接口呢?我们可以直接在类中编写方法。
谢谢 :)
一个示例可能对您有用,请参见以下场景。
1.class A extends B{
..
..
..
}
当 A 扩展 B 并且您正在创建 A 新类 C 时,您不能使 A 与 B 一起扩展 C 所以go for Interface.
2.class A implements B {
..
..
}
如果在 B 中添加一个新方法,并且它(B)由 100 个类实现,那么很难在所有类中实现新方法,所以请使用抽象类并添加具有骨架实现的新方法。
如需进一步帮助,请阅读Joshua Bloch 的Effective Java。
你有一个方法被 N 个类使用。如果定义与每个类不同,请使用接口。
假设一个方法对于 50 个类是相似的,而另外 50 个类具有不同的行为意味着使用抽象类。在那里你定义了方法。
并且用于前 50 个类,其余 50 个类具有不同的行为,因此根据类行为覆盖现有方法。
例子
Interface Graphics
{
void size();
void draw();
}
Class Rectangle implements Graphics
{
void size()
{
x=10;
y=10;
}
void draw()
{
.....
}
}
class Triangle implements Graphics
{
void size()
{
x=10;
y=10;
}
void draw()
{
.....
}
}
所以两个类的大小都相同然后使用抽象
abstract class Graphics
{
void size()
{
x=10;
y=10;
}
abstract void draw();
}
然后,如果任何类扩展了此类,则大小相似,并且仅定义draw()
如果某些类需要不同的位置,则覆盖大小。
这更像是面试问题 -
关于何时使用长期存在的东西的决定是与很多人讨论的问题之一,他们有自己的观点或支持这个或那个想法。我认为有一个基本规则几乎每次都有效:如果你能做出“A 是 B”的陈述,就使用抽象类和继承。如果您可以声明“A 能够 [doing] as”,或者也可以抽象类是什么,接口代表类可以做什么,请使用接口。
例如,我们可以说三角形是多边形,但说三角形能够成为多边形是没有意义的。
无论如何,与以往一样,经验法则是:使用你的常识。有时一个界面更适合,即使上面的规则告诉你相反,如果是这样的话,它只是使用界面(当然在考虑后果之后)。