我正在学习面向对象编程,但我对抽象类和具体类感到困惑。一些现实世界的例子将不胜感激。使用一个在另一个上有什么好处?什么时候会喜欢抽象类和具体类?
如果对Ruby
答案 0 :(得分: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
}
答案 1 :(得分:0)
抽象类通常是具体类的基类。 (通过OO继承派生)Abstract类通常为具体类强制实现接口。但是Abstract类还可以通过方法和属性实现具体类使用的通用功能。
您无法实例化Abstract类,但只能实例化具体类,假设它们实现了所有必需的方法。