C#面向对象编程:继承与重写

张开发
2026/4/16 16:02:00 15 分钟阅读

分享文章

C#面向对象编程:继承与重写
一、继承1.1继承定义继承是面向对象的一个核心概念之一继承的定义允许你创建一个新类派生类它从已有的类基类继承属性和行为并可以添加新成员或重写override基类的方法。简单的说可以让一个类跟另外一个类单向联系起来。即子类可以获得父类除了私有之外的成员字段、属性、方法等。继承具有传递的特点子类可以使用父类的所有可继承成员那么这个子类的子类也可以使用。一个父类可以有多个子类但是一个子类只能有一个父类。作用继承的使用可以减少重复代码可以把公共的属性和逻辑写在父类中。还可以扩展新功能可以在子类中添加新的方法、字段或属性。实现多态基类声明虚方法virtual派生类重写override调用同一方法表现出不同行为。继承的书写格式1.2重写当父类中有一个方法则子类中默认是不允许出行同名方法如果出现了则系统会认为是子类中要隐藏父类的这个同名方法那么子类对象调用方法后用实际调用的是子类中的方法就不能再用到父类中的这个方法了。但是当我们在子类方法的成员类型和名称之间加上new关键字后就可以正常使用。三种常用的权限修饰符他们的权限访问范围为子类重写方法的一个前提条件就是访问权限不能低于父类。如果父类的权限为public但子类为private。然后通过父类引用调用该方法时实际上执行的是子类的重写方法。这样就出现了一个问题子类方法是private不应该被外部访问。这违反了访问控制规则也破坏了“子类能替代父类”的承诺。一般情况是子类的访问权限跟父类相同特殊情况下子类的权限可以比父类高。我们现在可以看出来重写的前提条件有1.必须是在继承里面。2.访问权限不能比父类中被重写的方法的访问权限更低。但是重写还有两个条件3.方法名参数个数和参数类型都必须相同。方法名相同是肯定要的但是为什么还要参数个数跟参数类型相同呢一是保证通过父类引用能正确调用子类方法避免代码逻辑混乱和歧义。二是保证通过父类引用能正确调用子类方法多态其实直白来说参数个数跟参数类型跟父类中不相同的话那不就是重载吗。4.返回类型与被重写方法的返回类型可以不相同。二、抽象类抽象类的特点1.抽象方法只能在抽象类里面。2.抽象类和抽象方法必须被abstract修饰抽象类不能创建对象不能实例化。3.抽象类中可以有非抽象的方法。也可以有构造方法不过需要对抽象类的成员变量进行初始化。字段没有显示初始化的话会获得默认值。如null、0、false4.一个类继承了抽象类要重写所有的抽象方法。因为抽象类中的抽象方法本身就是一个“空壳”派生类不重写全部的方法的话没有必要定义这个方法你可以通过非抽象的方法实现这个功能5.可以包含字段和属性抽象类可以包含字段和属性用于存储数据和提供接口。

更多文章