当前位置: 首页 > news >正文

C#-抽象类、抽象函数

关键字:abstract

一:抽象类

抽象类:abstract修饰、无法实例化、可以包含抽象方法

抽象函数:不可以实例化;只有定义,没有函数体。

抽象类:可以向普通类一样封装数据。可包含普通方法、抽象方法;

普通类:不可包含抽象方法

抽象方法:没有方法体的纯虚方法,继承后必须去实现的方法

1.1 声明语法
abstract class Fruits{public string name;public abstract void Buy();
}
1.2 如何选择普通类还是抽象类:
  1. 不希望被实例化的对象,相对比较抽象的类可以使用抽象类。

  2. 父类中的行为不太需要被实现的,只希望子类去定义具体的规则的 可以选择 抽象类。然后使用其中的抽象方法来定义规则

若爷类为抽象类,子类不是,孙类也不必理会爷类中的抽象函数,因为父类已经实现

抽象类不可以被实例化,但可以遵循里氏替换原则,用父类容器装子类。

作用:适用整体框架设计

二:抽象函数

又称纯虚函数

2.1 特点:
  1. 只能在抽象类中声明

  2. 没有方法体

  3. 不能是私有的。public或protected都可以

  4. 继承后必须实现,用override重写

2.2 声明语法
abstract class Fruits{public string name;//抽象方法是不能有方法体的public abstract void Buy();
}
--------实现
class Apple:Fruits{public override void Buy(){};
}
Fruits f = new Apple();//遵循里氏替换原则

三:虚方法和抽象函数的区别

虚方法:子类可选择是否重写

抽象行数:子类必须重写


http://www.mrgr.cn/news/69917.html

相关文章:

  • 【Golang】Go语言环境安装
  • 接口类和抽象类在设计模式中的一些应用
  • 国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?
  • 蓝桥杯PythonB组扫盲
  • 开源 - Ideal库 - 常用枚举扩展方法(二)
  • 【LeetCode】【算法】279. 完全平方数
  • 腾讯云双11狂欢:拼团优惠、会员冲榜、限时秒杀,多重好礼等你来拿!
  • 论文解读之SDXL: Improving Latent Diffusion Models forHigh-Resolution Image Synthesis
  • 「iOS」——知乎日报第三周总结
  • 销售管理SCRM助力企业高效提升业绩与客户关系管理
  • 【C++练习】二进制到十进制的转换器
  • The Rank-then-Encipher Approach
  • 「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建
  • goframe开发一个企业网站 开发环境DOCKER 搭建16
  • MATLAB实现最大最小蚁群算法(Max-Min Ant Colony Optimization, MMAS)
  • leetcode hot100【LeetCode 131.分割回文串】java实现
  • Jquery添加或删除Class属性实例代分享
  • Linux应用项目之量产工具(一)——显示系统
  • SwiftUI开发教程系列 - 第7章:数据流和状态管理
  • 信息安全数学基础(46)域和Galois理论
  • Python实现Delaunay三角剖分之Bowyer-Watson算法
  • 区块链技术在版权保护中的应用
  • Java项目实战II基于Spring Boot的农商对接系统的设计与实现(开发文档+数据库+源码)
  • Iceberg 写入和更新模式,COW,MOR(Copy-on-Write,Merge-on-Read)
  • 2024/11/10周报
  • 【Promise】自定义promise