C#
本随笔为个人复习巩固知识用,多从书上总结与python基础教程
理解归纳得来,如有错误烦请指正
面向对象的三大基本特征:封装、继承、多态
封装在前面说过了
继承:继承是指一个类可以继承另一个类(成为父类)的全部成员变量和方法,并进行扩展,重写父类的方法,或添加新的成员方法和变量。
多态:多态是指将子类转为父类不需要显示的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();
}
}
}