2011-01-20 36 views
0

我已经从某处读了一些行,但我不明白这一行的含义清楚..我不知道为什么我不明白。我知道这两者之间的区别非常好..但是plz帮助我..并解释它是什么意思...?界面/抽象类

在设计中,您希望基类只提供其 派生类的接口。这意味着,你不要 希望任何人实际实例化基类的 对象。你只有 想上传到它(隐含 向上,这会给你多态 行为),所以它的接口可以使用 。这是通过 使用抽象关键字 使该类抽象来完成的。如果有人试图将 作为抽象类的对象,编译器会阻止它。

在此先感谢....

+0

这句话的来源在哪里? – aponomarenko 2011-01-20 11:16:36

+0

究竟是什么不清楚? – 2011-01-20 11:19:25

回答

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的“接口”,而是“可用于与此对象交互的一组方法”。

所有动物都说话,这就是重要的。这是界面。他们讲话的具体方式是实施细节。

0

接口,同时具有具体方法和抽象方法的抽象类,它没有具体的方法纯粹抽象类也

0

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