0

我正在学习面向对象编程,但我对抽象类和具体类感到困惑。一些现实世界的例子将不胜感激。使用一个比另一个有什么好处?什么时候更喜欢抽象类和具体类?

如果答案比我在上下文中所要求的任何语言都特定Ruby

4

2 回答 2

3

如果你有一个不能被实例化的对象,你应该使用一个抽象类。但是,如果要实例化此类,则应使用具体类。

想象一下,你想要几个动物课程。但规则只是实例化特定的动物,如狗、猫或老鼠。但现在所有这些动物都有一些属性和方法——比如名字。所以你把它们放在一个基类Animal中以避免代码重复。您无法创建以下实例Animal

public abstract class Animal
{
    public string Name { get; set; }
    public void Sleep()
    {
        // sleep
    }
}

public class Cat : Animal
{
    public void Meow()
    {
        // meooooow
    }
}

public void DoSomething()
{
    var animal = new Animal(); // illegal operation
    var cat    = new Cat();    // works fine
}
于 2012-05-07T06:30:11.807 回答
0

抽象类通常是具体类的基类。(派生,通过 OO 继承)抽象类通常为具体类强制执行接口。但是抽象类也可以通过方法和属性实现具体类使用的通用功能。

您永远无法实例化抽象类,而只能实例化具体类,假设它们实现了所有必要的方法。

于 2012-05-07T06:55:10.843 回答