C#之继承
继承特性描述:
继承性是面向对象程序设计语言的另一基本特征,通过继承,可以实现代码的复用。运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性。该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西。继承而得到的类为子类,被继承的类为基类或父类。继承是子类利用父类中定义的方法和变量,就像它们属于子类本身一样。
C#中不支持类之间的多重继承(注:C#支持接口之间的多重继承),即不允许一个子类继承多个父类。
不要混淆的是,C#支持多层继承,用一个子类作为另一个类的父类是完全可以接受的。也就是说,你可以如你所愿的建立包含任意多层继承的类层次。例如,给定三个类A、B和C。C是B的一个子类,而B又是A的一个子类。当这种类型的情形发生时,每个子类继承它的所有父类的属性,于是这种情况下,C就继承了B和A的所有方面。
如果缺省:基类,则该类为Object的子类。Object类没有任何直接或间接基类,并且是所有其他类的最终基类。无论基类成员的可访问性如何,除构造函数和析构函数外,
所有其他基类的成员都能够被子类继承。然而,有些继承成员在派生类中是不可访问的,取决于基类成员的可访问性。
虚方法与重写方法
如果一个实例方法的声明中有virtual修饰符,那么这个方法为虚方法。如果一个实例方法的声明中有override修饰符,重写方法用相同的签名重写所继承的虚方法。在虚方法调用中,对象的运行时类型确定了要被调用的究竟是方法的哪一个实现。
只有在包含了override修饰符时,一个方法才能重写另一个方法。否则,声明一个从基类继承而来的具有相同签名的方法只会隐藏被继承的基类方法。重写方法允许通用类指定方法,这些方法对该类的所有派生类都是公用的,同时该方法允许子类定义这些方法中的某些或全部的特殊实现。
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
SuperClass superClass = new SubClass();
superClass.Method();
Console.ReadKey();
}
}
public class SuperClass
{
public SuperClass()
{
Console.WriteLine("In SuperClass.Consturctor");
}
public virtual void Method()
{
Console.WriteLine("In SuperClass.Method()");
}
}
public class SubClass:SuperClass
{
public SubClass()
{
Console.WriteLine("In SubClass.ConsTructor");
}
public override void Method()
{
Console.WriteLine("调用成功");
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端