📅  最后修改于: 2023-12-03 15:28:52.958000             🧑  作者: Mango
在面向对象的程序设计中,抽象类是一种特殊的类,它不能被实例化,只能被继承,且可以包含抽象方法。
抽象方法是一种没有实现的方法,只有方法的声明,抽象类中可以包含抽象方法,但是抽象类中也可以包含非抽象方法。一个类继承了抽象类,必须实现其所有的抽象方法,否则这个类也必须成为抽象类。
但是,在一个非抽象类中,如果包含了抽象成员(包括抽象方法,抽象属性和抽象事件),那么这个类必须成为抽象类。
abstract class Shape
{
public abstract double Area { get; }
public abstract double Perimeter { get; }
}
class Rectangle : Shape
{
public double Height { get; set; }
public double Width { get; set; }
public override double Area => Height * Width;
public override double Perimeter => 2 * (Height + Width);
}
在上面的示例中,抽象类 Shape
中包含了两个抽象成员 Area
和 Perimeter
,而另一个类 Rectangle
继承了 Shape
,并实现了 Area
和 Perimeter
,因此它不是抽象类。
如果一个类包含了抽象成员,那么这个类必须成为抽象类。如果一个类继承了抽象类,那么这个类必须实现抽象类中的所有抽象成员,否则这个类也必须成为抽象类。抽象类是一种特殊的类,不能被实例化,只能被继承,并且可以包含抽象方法、抽象属性和抽象事件。