news 2026/2/3 10:10:25

深入理解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/2/3 14:15:24

小程序计算机毕设之基于springboot+微信小程序的影院售票系统设计与实现基于微信小程序的影院售票系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/3 17:29:00

创客匠人思辨:知识付费的终点——从“内容消费”到“数据资产共建”

知识付费行业正站在一个拐点上。用户为焦虑和信息差付费的初级阶段已经过去,单纯的“内容交付”越来越难以支撑可持续的商业模式。创客匠人观点中隐含了一条更深刻的线索:未来的知识服务,其价值闭环的终点可能不再是“交易完成”,…

作者头像 李华
网站建设 2026/2/3 12:58:39

从基础到进阶:CAD 框架下一步开发路线(新手实操版)

我们已经完成了 CAD 基础框架搭建和性能优化,现在你可能会问:“接下来该往哪个方向走?” 新手最忌 “贪多求全”(比如直接上手 3D 建模、复杂约束),也忌 “停滞不前”(只停留在画点线圆&#xf…

作者头像 李华
网站建设 2026/2/3 3:57:45

小程序计算机毕设之基于springboot的“智宠”一站式宠物服务小程序的设计与实现宠物医疗保健、宠物用品购买、宠物知识获取(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/4 2:39:19

小程序计算机毕设之基于springboot的华兴书城微信小程序基于SpringBoot的微信小程序书店(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/3 23:02:22

小程序毕设选题推荐:基于springboot+微信小程序的宠物领养系统小程序基于SpringBoot的宠物领养微信小程序【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华