抽象类和密封类都是用来限制类的继承和实例化的特殊类。
抽象类是一个不能被实例化的类,只能被继承。抽象类可以包含抽象方法和非抽象方法。子类必须实现抽象方法,但可以选择性地覆盖非抽象方法。抽象类通常用于定义一些通用的行为或属性,让子类来实现具体的功能。
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 {}
总结来说,抽象类用于定义一些通用的行为,让子类来实现具体的功能;而密封类用于防止其他类继承它,保持类的完整性。在实际开发中,根据具体的需求来选择抽象类和密封类的使用。