首页 > 其他分享 >2_virtual关键字的作用

2_virtual关键字的作用

时间:2024-03-03 23:15:31浏览次数:30  
标签:virtual 关键字 Animal 重写 public 作用 属性

virtual作用?

virtual关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写(使用override关键字对虚方法重写)。 如下是虚方法声明和重写虚方法的示例:

声明虚方法

public class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("动物叫声");
    }
}

public class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("汪汪");
    }
}

public class Cat : Animal
{
    public override void Speak()
    {
        Console.WriteLine("喵喵");
    }
}

示例说明:

  • Animal类中声明了一个虚方法Speak(),该方法用于定义动物的叫声。

  • Dog类和Cat类继承自Animal类,并分别重写了Speak()方法,以实现不同的叫声。

总结:

  • virtual关键字用于声明虚方法,允许在派生类中重写基类中的方法,从而实现多态性。

  • 多态性是指同一个方法可以根据对象的实际类型执行不同的操作。

声明虚属性

此外,virtual关键字还可以用于声明虚属性。虚属性允许在派生类中重写基类中的属性,从而实现属性的多态性

示例代码:

public class Animal
{
    public virtual string Name { get; set; }
}

public class Dog : Animal
{
    public override string Name
    {
        get { return "狗"; }
        set { }
    }
}

public class Cat : Animal
{
    public override string Name
    {
        get { return "猫"; }
        set { }
    }
}


示例说明:

  • Animal类中声明了一个虚属性Name,该属性用于获取或设置动物的名字。
  • Dog类和Cat类继承自Animal类,并分别重写了Name属性,以实现不同的名字。

总之,virtual关键字是C#中一个重要的关键字,用于实现多态性和属性的多态性。

标签:virtual,关键字,Animal,重写,public,作用,属性
From: https://www.cnblogs.com/cookie2030/p/18050954

相关文章

  • Volatile关键字原理
    转载请标明:https://www.cnblogs.com/tangZH/p/15113505.html一、如果一个变量被volatile关键字修饰,那么所有线程都是可见的。所谓可见就是,当一条线程修改了这个变量值,新值对于其他线程来时是立即可见的; 而普通变量不能做到这一点。 1、现在计算机缓存架构:  CPU与内存之......
  • 在写ts的demo时,经常给文件添加export {},作用是什么
    在TypeScript中,当你在一个文件中添加export{}时,其作用主要有以下几点:创建模块(Module):在TypeScript中,每个.ts文件都是一个模块。通过添加空的export{},即使该文件当前没有实际导出任何内容,也明确地将文件标记为一个模块。这样可以确保其他文件可以通过导入(import)来使......
  • 在K8S中,"lsof" 作用有哪些?
    在Kubernetes(K8s)中,虽然lsof命令不是专门为Kubernetes设计的工具,但它仍然可以在单个Pod或节点级别的Linux环境中提供重要信息。lsof(ListOpenFiles)命令主要用于列出系统当前打开的所有文件,这对于在Kubernetes环境中进行问题排查同样具有价值,尤其是在以下几个方面:查看Pod进......
  • 变量、常量、作用域
    变量变量是什么:就是可以变化的量例如咱们上学时学习的一元一次方程的X=Y既是变量;X和Y可以是任何类型的值,具体有我们定义Java是一种强类型语言,每个变量都必须声明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域注意事项每个变量都......
  • 单片机开发中pc和sp的作用
    概念两个都是寄存器pc(programcounter)程序计数器SP(stackpointer)堆栈指针原理pc存放下一条指令的寄存器,cpu从内存中拿指令,寄存器是属于cpu的一部分,不属于内存sp堆栈指针,本质是寄存器,指向堆栈的顶部,爬论坛:https://www.cnblogs.com/uestcliming666/p/11488782.html假设......
  • 隐私计算在释放万亿美元 SaaS 市场的重要作用
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。过去十年间数字领域经历了一场颠覆性的转变。这一演变的前沿是软件即服务(SaaS),通过提供定制解决方案和无缝连接彻底改变了商业生态系统。但随着......
  • 简单实现new关键字,及为什么当result为对象则返回这个对象?
    下面是一个简单的JavaScript代码示例,演示了如何手动实现new关键字的功能:functionmyNew(constructor,...args){//创建一个新对象,该对象继承自构造函数的原型varinstance=Object.create(constructor.prototype);//在新对象上调用构造函数,并传入参数var......
  • mysql8的sql_mode不起作用
    如果sql_mode似乎没有起作用,可能是由以下几个原因造成的:配置文件位置不正确:确保my.ini文件位于MySQL服务器实际读取配置的位置。对于Windows系统,这通常是MySQL安装目录下的bin文件夹。对于Linux系统,它可能位于/etc/mysql/、/etc/my.cnf或~/.my.cnf等位置。MySQL服务未重启:对......
  • JAVA基础:引用类型参数传递的相关案例(数组的传递) 方法重载 return关键字
    packagecom.itheima.Method;publicclassMethod6{publicstaticvoidmain(String[]args){int[]arrs=newint[]{2,5,6,4};printArray(arrs);}publicstaticvoidprintArray(int[]arr){if(arr!=null){System.out......
  • 数据可视化在办公场景中能够发挥什么作用?
    在现代办公场景中,数据可视化的应用已经成为提高效率、推动创新的得力工具。无论是管理层还是普通员工,都能从数据可视化中受益匪浅。下面我就以可视化从业者的角度,简单聊聊这个话题。首先,数据可视化提升了数据的易读性与理解性。通过图表、图形等形式呈现数据,让原本晦涩......