任何人都可以告诉我
何时使用抽象类以及何时使用接口?
这么多网站只有差异。我无法获得这些条款
"何时使用抽象类以及何时使用interface"
先谢谢
答案 0 :(得分:1)
<强>接口强>
接口有点像模板。比如说你想要制作一个'Shape'类。并非所有形状都使用相同的公式来计算面积,因此您只需确定必须有“getArea”方法,但不要定义它。
一个简单的例子:
public interface Shape
{
public int getArea();
}
然后你可以有一个实现Shape接口的类:
public class Rectangle implements Shape
{
//this works for rectangles but not for circles or triangles
public int getArea()
{
return this.getLength() * this.getHeight();
}
}
抽象类
抽象方法可以通过子类扩展。*它们与接口的不同之处在于它们也可以包含已定义的方法。
您仍然可以保留未定义的方法,但必须将它们标记为抽象。
一个例子:
public abstract class Vegetable
{
public String vegName;
public boolean edible = true;
public Vegetable(final String vegName, final boolean edible)
{
this.vegName = vegName;
this.edible = edible;
}
public void printName()
{
System.out.println(this.vegName);
}
//to be determined later when implemented
public abstract void drawOnScreen();
}
然后我们可以扩展这个抽象类。
public class Carrot extends Vegetable
{
//we must define the abstract methods
public void drawOnScreen()
{
//we can still use our other methods
this.printName();
//do some other thing that is specific to this class
}
}
答案 1 :(得分:0)
接口不能包含实现(至少在Java 8之前),所以如果你需要&#34; common&#34;方法实现,你必须在超类中(无论是抽象的还是具体的)
但是,任何类只能有一个超类(但很多接口)。所以当你有一个已经有超类
的类时,接口就是多态的解决方案