-
C#(八)基础篇—继承和多态
C#
本随笔为个人复习巩固知识用,多从书上总结与理解归纳得来,如有错误烦请指正
面向对象的三大基本特征:封装、继承、多态
封装在前面说过了
继承:继承是指一个类可以继承另一个类(成为父类)的全部成员变量和方法,并进行扩展,重写父类的方法,或添加新的成员方法和变量。
多态:多态是指将子类转为父类不需要显示的类型转换,被转为父类的对象仍然可以执行真正子类的重载方法。
所有C#类都是从System.Object派生出来的。
namespace ConsoleApp1 { //定义一个Enemy的基类 public class Enemy { //构造函数 public Enemy() { Console.WriteLine("enemy construtor"); } //virtual表示该方法为虚方法,可以被子类重写 public virtual void UpdateAI() { Console.WriteLine("update enemy ai"); } } //派生类Boss继承自基类Enemy public class Boss : Enemy { //构造函数 public Boss() { Console.WriteLine("boss constructor"); } //使用override关键词重写虚方法 //当子类被转为父类时,重写的虚方法依然能正确执行 public override void UpdateAI() { Console.WriteLine("update boss ai"); } } class Program { static void Main(string[] args) { Enemy[] enemies = new Enemy[2];//创建数组,包括两个Enemy基类 enemies[0] = new Enemy();//创建一个Enemy,执行Enemy的构造函数 enemies[1] = new Boss();//创建一个Boss,先执行Enemy的构造函数,再执行Boss的构造函数 for(int i = 0; i < 2; i++) { //enemies[0]的类型是Enemy,会调用Enemy类的UpdateAI //enemies[1]的类型是Enemy,但它实际上是Boss //多态的原因,enemies[1]任然会调用Boss类的UpdateAI enemies[i].UpdateAI(); } Console.ReadKey(); } } }
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式