class BaseObj
{
public virtual int Delete() { return 0; }
}class AObj:BaseObj
{
public override int Delete() { return 20; }
}
class BObj:AObj
{
new public int Delete() { return 40; }
}
class A
{
static void Main()
{
BaseObj c1= new BObj(); Int x = cl.Delete();}
X的值运行后为20,请问过程是怎样得出来的?这里用派生累构造函数实例化一个基类的对象得出来的Cl是怎样的一个对象?
还有new public int Delete() { return 40; }这里的new是起显式隐藏或者说修改其基类当中对Delete()函数
的声明的作用吗?
请给位指点指点,小弟是个初学者,如果问的问题太低级还请包涵!!
{
public virtual int Delete() { return 0; }
}class AObj:BaseObj
{
public override int Delete() { return 20; }
}
class BObj:AObj
{
new public int Delete() { return 40; }
}
class A
{
static void Main()
{
BaseObj c1= new BObj(); Int x = cl.Delete();}
X的值运行后为20,请问过程是怎样得出来的?这里用派生累构造函数实例化一个基类的对象得出来的Cl是怎样的一个对象?
还有new public int Delete() { return 40; }这里的new是起显式隐藏或者说修改其基类当中对Delete()函数
的声明的作用吗?
请给位指点指点,小弟是个初学者,如果问的问题太低级还请包涵!!
楼主这里很可以没有override,所以调用的仍然是父类的方法AObj.delete()
比如和我直接用BaseObj c1= new BaseObj()这样得到的实例有什么差别?
不过当你在方法中有个参数为 BaseObj 类型而非BObj 类型时,这个方法的灵活性是很高的
传参的时候既能传BaseObj 也能传BObj 还能传AObj 即BaseObj 的子类