news 2026/4/15 18:57:09

深入理解C#抽象类与虚方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解C#抽象类与虚方法

抽象类和虚方法

一,抽象类

1,抽象类: 用于提供类的部分成员实现

动态多态表现:抽象

2,抽象类包含抽象方法也可以是普通方法 ,如果抽象方法不用去实现,谁继承这个抽象谁去实现抽象方法

3,抽象类里面也可以定义抽象成员, 如果是抽象成员。 需要在派生类里面去实现成员

4,定义抽象People类:public abstract class People{}

5,抽象方法不能有方法体 不能加{}, 抽象属性 不能赋值

6,重写抽象成员和抽象方法,重写关键字 override

相关代码:

public abstract class People
{
public int Age { get; set; } = 10;//普通属性
//public abstract string Name { get;set; } = "上海"; //抽象属性 不能赋值

public abstract string Name { get; set; }
//普通方法可以正常定义和实现
public void Eat()
{
Console.WriteLine("吃相难看");

}
//抽象方法不能有方法体 不能加{}
public abstract void SayHello(int age);
}

7,定义一个派生类:

//在子类实现抽象成员
public class China : People
{

//需要重写抽象成员和抽象方法
//重写关键字 override
public override string Name { get; set; } = "余伟";
public override void SayHello(int a)
{
Console.WriteLine("你好,吃了吗");
}

8,定义第二个派生类:

}
public class Japan : People
{
public override string Name { get; set; }
public override void SayHello(int a)
{

Console.WriteLine("扣你吉瓦");
}
}

}

9,最后调用输出:

二,虚方法

1,抽象方法和虚方法的区别

【1】,抽象成员和抽象方法只能定义在抽象类里面,但是虚方法和虚成员可以定义在普通类里面
【2】,抽象方法和抽象成员在抽象类里面不能实现 但是虚方法和虚成员可以定义在普通类里面实现
【3】,抽象方法和抽象成员在派生类里面必须实现 但是虚方法和虚成员可以不用在派生类里面实现
【4】, 可以使用override重写基类的抽象方法或者虚方法

2,添加virtual关键字 使方法变成虚方法 虚方法可以定义在普通类中, 并且可以实现

3,相关代码

定义一个People类和Eat方法
定义两个派生类

最后调用输出:

三,密封类和静态类

1,static class 静态类: 添加静态成员 不能new实例化

2,sealed class 密封类,特点不能被继承

3,密封类是不允许被继承的,虚方法设计的目的就是为了在子类重写这个方法,两者设计理念相违背

4,静态类: 添加静态成员 不能new实例化
static class B
{
public static int Age { get; set; }
public static void Eat()
{
Console.WriteLine("ooo");
}
}

sealed 密封类,特点:不能被继承
sealed class A
{
public string Name { get; set; }
public void Eat()
{
Console.WriteLine("吃东西");


}

5,静态类密封类的使用:

//密封类的使用
A a = new A();
a.Name = "好";
a.Eat();

//静态类的使用
B.Age = 10;
B.Eat();

"上文为本次第十四部分内容,后续将不定时更新,若对主题感兴趣,欢迎订阅获取更新通知."

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:21:46

国密内网IP是什么?

国密内网IP证书的定义国密内网IP证书是一种基于国家密码管理局(SM系列算法)标准的内网IP地址加密证书,主要用于保障内网通信的安全性和身份认证。这类证书采用国产密码算法(如SM2、SM3、SM4),符合国家信息安…

作者头像 李华
网站建设 2026/4/15 10:43:41

轻量、高敏、高刚:BOTA传感器为UR机械臂注入力觉智能

让 UR 机器人“感知”力:BOTA 六维力控套件为科研提供开箱即用的力觉平台 在人机协作、柔顺控制或具身智能研究中,一个基础却关键的问题是:如何获得稳定、可复现的力反馈? BOTA 推出专为 UR 协作机器人设计的力控套件 F/T Senso…

作者头像 李华
网站建设 2026/4/16 11:58:05

多路定制化电源模块测试解决方案案例-纳米软件

一、案例摘要 本案例聚焦成都某专业生产电源模块的电子企业,该企业采用 “成都生产 重庆研发” 的跨地运营模式,核心产品为多路定制电源模块。由于产品定制化程度高,企业目前依赖手动测试导致效率低下,且研发与生产两地测试数据不…

作者头像 李华
网站建设 2026/4/16 1:07:10

Vue 3 CSS中的v-bind()完全指南:让样式真正响应式

Vue 3 CSS中的v-bind()完全指南:让样式真正响应式 忘掉繁琐的类名切换,Vue 3的v-bind()函数让你在CSS中直接使用JavaScript响应式变量,实现真正动态的样式系统。 1. 什么是CSS中的v-bind()? Vue 3.2+ 引入了一个革命性的功能:在CSS中直接使用响应式数据。这意味着你可以在…

作者头像 李华
网站建设 2026/4/16 12:01:52

不是操作失误——而是速卖通在注册完成那一刻就看穿了你的账号

​注册速卖通账号很多人到现在还以为:速卖通买家号出问题,是“后面操作不当”。但实际情况是——账号的命运,在注册完成那一刻,系统就已经给你定了一个“初始画像”。后续的浏览、加购、下单,只是在不断验证一个问题&a…

作者头像 李华
网站建设 2026/4/16 11:12:54

后端面经记录

3.那既然括号里的数字,不是用来限制取值范围的那为什么要设置长度呢,我不设置行不行 4.如果表中有INT(11),而插入的是100,你会看到什么样的显示效果?INT(11) 是不是就是存储11位的数字,如果你插入了一个大于…

作者头像 李华