接口/抽象类

时间:2011-01-20 11:14:09

标签: java

我已经从某处读过一些行但我无法理解这条线的含义......我不知道为什么我无法理解。我非常清楚这两者之间的区别......但是PLZ帮助我......并解释它的含义......?

  

在设计中,您希望基类仅为其提供接口   派生类。这意味着,你没有   希望任何人实际实例化   基类的对象。只有你   想要向上倾斜(暗示   upcasting,它给你多态性   行为),以便其界面可以   使用。这是通过   使用the使该类抽象化   抽象关键字。如果有人试图   制作一个抽象类的对象,   编译器会阻止它。

提前致谢....

3 个答案:

答案 0 :(得分:3)

public abstract class Animal {
  public abstract String speak();
}
public class Dog extends Animal {
  public String speak() { return "woof!"; }
}
public class Duck extends Animal {
  public String speak() { return "quack!"; }
}

Animal a = Zoo.getRandomAnimal();
a.speak();

你希望人们将动物称为动物,而不是特别是狗或鸭。这样,如果你养殖一只狗/鸭混合动物,从而创造出一种新型动物,它们就不必改变代码来处理这种新奇迹。

他们在你的引言中谈到的界面不是在谈论Java'界面',而是'你可以用来与这个对象交互的一组方法'。

所有动物都说话,这才是重要的。这是界面。究竟他们如何发言是一个实施细节。

答案 1 :(得分:0)

接口是纯抽象类,没有具体方法,而具有具体方法和抽象方法的抽象类也是

答案 2 :(得分:0)

这意味着如果将类A定义为抽象,则无法创建类型A的实例。您只能创建A的子类的实例(从A扩展/继承的类)。