虚方法 virtual 把需要重写的方法返回值前加vierual
重写 override
隐藏方法
虚方法 virtual 把需要重写的方法返回值前加vierual
重写 override
隐藏方法
base只能访问父类里面的值
this只能访问子类里面的值
虚方法:
方法重写:
父类:virtual
子类:override
创建子类对象的方式
1.Boss b1=new boss();
2.Enemy b2=new boss();
第二种方式创建时,默认使用的方法是父类的,当使用了virtua虚方法的时候,使用的方法是子类的
可以把子类赋值给父类。但是不能把父类赋值给子类(子类的要求更高)
例如 Enemy enemy=new boss(); 对的
Boss b = new Enemy; 错误
构造的子类对象赋值给父类声明的对象,本质还是子类的对象,但是父类声明的,子类里的方法不能使用
重写函数的办法
1.虚方法
在Enemy中
pubilc virtual void Move()
在boss类中
(输入override会有提示)
public override void Move()
{
base.Move();//和父类相同
}
2.隐藏方法、
虚函数的功能,当父类接收子类时,父类实例调用虚函数,程序会先看子类是否对虚函数重写,如果重写了,就会调用子类的函数
子类重写父类的方法。
父类类型的对象 接收子类类型, java种的多态。
重写父类方法的两种形式:
1、 虚方法:
虚方法的使用场景: 子类需要重写父类已有的方法
定义: 父类的方法 使用 virtual关键字进行修饰, 子类重写的方法使用override 关键字进行重写。
在调用虚函数的时候会检查子类有没有重写该虚函数。
2、 隐藏方法:
// public override void Exam() 重写父类(基类)的方法
//public new void Exam() new 关键字可以显式隐藏从(父类)基类继承的成员。
重写:
父类:virtual
子类:override
父类声明 子类构造函数,生成的对象为子类对象。不要这么写吧