抽象类和密封类都是用来限制类的继承和实例化的特殊类。
抽象类是一个不能被实例化的类,只能被继承。抽象类可以包含抽象方法和非抽象方法。子类必须实现抽象方法,但可以选择性地覆盖非抽象方法。抽象类通常用于定义一些通用的行为或属性,让子类来实现具体的功能。
public abstract class Shape
{
public abstract double GetArea();
public abstract double GetPerimeter();
}
public class Circle : Shape
{
public double Radius { get; set; }
public override double GetArea()
{
return Math.PI * Radius * Radius;
}
public override double GetPerimeter()
{
return 2 * Math.PI * Radius;
}
}
密封类是一个不能被继承的类,是最终的类。密封类通常用于防止其他类继承它,保持类的完整性和封闭性。
public sealed class FinalClass
{
public void SomeMethod()
{
// do something
}
}
// 无法继承FinalClass
// public class SubClass : FinalClass {}
总结来说,抽象类用于定义一些通用的行为,让子类来实现具体的功能;而密封类用于防止其他类继承它,保持类的完整性。在实际开发中,根据具体的需求来选择抽象类和密封类的使用。