我已经从某处读过一些行但我无法理解这条线的含义......我不知道为什么我无法理解。我非常清楚这两者之间的区别......但是PLZ帮助我......并解释它的含义......?
在设计中,您希望基类仅为其提供接口 派生类。这意味着,你没有 希望任何人实际实例化 基类的对象。只有你 想要向上倾斜(暗示 upcasting,它给你多态性 行为),以便其界面可以 使用。这是通过 使用the使该类抽象化 抽象关键字。如果有人试图 制作一个抽象类的对象, 编译器会阻止它。
提前致谢....
答案 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扩展/继承的类)。