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

C#学习系列之虚方法和多态

C#学习系列之虚方法和多态

  • 啰嗦
  • 设计原则(六大类其中之一)
  • 基类的引用
    • 使用
  • 共性与差异
  • 虚方法和多态的武器
    • 使用
  • 其他
  • 总结


啰嗦

基础学习。


设计原则(六大类其中之一)

**依赖倒置原则:**依赖抽象类,不依赖具体类。(减少耦合)
抽象类形容为父类,而子类是父类的具体类。

基类的引用

派生类包含基类和派生类,用基类引用指向派生类。通过指向派生类的基类引用访问派生类中的基类部分。

使用

将Child child改成Parent child也是可以的,如果出现调用同名函数的话,调用就是调用基类中的函数,而不是派生类中的函数。两者根据实际使用而有所不同。

public class parent
{public string name;
}
public class child:parent//相当于child继承于parent
{
}
class program
{static void Main(string[] args){Parent child=new Child();//将Child child改成Parent child也是可以的child.name="lily";//拥有父类的基础}
}

共性与差异

共性:派生类都是基于基类进行派生的。那么多个由同一个基类做的派生类会有共同的特性。
差异:派生类与派生类之间会存在不同的差异。

虚方法和多态的武器

虚方法:使用virtual的方法。基类的虚方法可在派生类使用override重写。
多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数。

使用

dog和cat使用到了override进行重写,所以不会用到基类的虚方法,并且两者的speak也会有所不同。

class pet
{virtual public void speak();
}
class dog
{override public void speak();//重写基类的虚方法
}
class cat
{override public void speak();//重写基类的虚方法
}
pet.speak();//调用基类的
dog.speak();//调用派生类

其他

  • 重写虚方法必须具有相同的可访问性,且基类方法不能是private(派生就无法访问)
  • 不能重写static方法或非虚方法
  • 方法、属性、索引器、事件都可以声明为virtual或override

总结

学习记录。
https://www.imooc.com/video/14226

http://www.lryc.cn/news/214622.html

相关文章:

  • 面试算法44:二叉树中每层的最大值
  • JWT的头部、载荷和签名分别包含哪些信息?
  • 【烧火柴问题】奇思妙想火柴
  • C++数据结构算法篇Ⅰ
  • Python selenium获取元素信息
  • 测试Winsock的select
  • CentOS 搭建 Hadoop3 高可用集群
  • ModuleNotFoundError: No module named ‘paddle.fluid.incubate.fleet‘
  • 【Java】Java中的引用类型
  • File类、方法递归
  • MySQL - 系统库之 sys
  • GoLong的学习之路(十七)基础工具之Gin框架使用JWT(前后端分离)
  • 【代码数据】2023粤港澳大湾区金融数学建模B题分享
  • 大数据之LibrA数据库系统告警处理(ALM-12006 节点故障)
  • poi兴趣点推荐数据集介绍
  • 把两个4点的结构相加
  • windows内存取证-中等难度-下篇
  • 代码随想录算法训练营第7天|454 四数相加II 383. 赎金信 15.三数之和 18 四数之和
  • 负载均衡深度解析:算法、策略与Nginx实践
  • 7. 一文快速学懂常用工具——Makefile
  • [ACTF2023]复现
  • HNU-编译原理-讨论课1
  • 【Linux】关于Nginx的详细使用,部署项目
  • 编写 navigation2 控制器插件
  • 计算机网络 第六章应用层
  • 人工智能领域CCF推荐国际学术刊物最新目录(全)
  • 实现基于 Azure DevOps 的数据库 CI/CD 最佳实践
  • 上海实习小记
  • uniapp实现路线规划
  • 飞利浦双串口51单片机485网关