抽象
标有关键字 abstract
的类无法实例化。
如果一个类包含抽象成员,或者它继承了它未实现的抽象成员,则必须将该类标记为抽象。即使没有涉及抽象成员,也可以将类标记为抽象。
当实现的某些部分需要由另一个组件指定时,抽象类通常用作基类。
abstract class Animal
{
string Name { get; set; }
public abstract void MakeSound();
}
public class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Meov meov");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark bark");
}
}
Animal cat = new Cat(); // Allowed due to Cat deriving from Animal
cat.MakeSound(); // will print out "Meov meov"
Animal dog = new Dog(); // Allowed due to Dog deriving from Animal
dog.MakeSound(); // will print out "Bark bark"
Animal animal = new Animal(); // Not allowed due to being an abstract class
使用关键字 abstract
标记的方法,属性或事件表示该成员的实现应该在子类中提供。如上所述,抽象成员只能出现在抽象类中。
abstract class Animal
{
public abstract string Name { get; set; }
}
public class Cat : Animal
{
public override string Name { get; set; }
}
public class Dog : Animal
{
public override string Name { get; set; }
}