【新手问题】A是B的父类,A a=new B()
public abstract class A
{
public A()
{
Console.WriteLine( 'A ');
}
public virtual void Fun()
{
Console.WriteLine( "A.Fun() ");
}
}
public class B: A
{
public B()
{
Console.WriteLine( 'B ');
}
public new void Fun()
{
Console.WriteLine( "B.Fun() ");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
执行结果如下:
A
B
A.Fun()
如果把class B中的Fun()的new改成override,执行结果如下:
A
B
B.Fun()
问题①:A a=new B()和B a=new B()具体有什么区别?
问题②:我知道如果是B a=new B()的话,那无论class B中Fun()是new还是override,最后输出的都会是B.Fun(),为什么换成A a=new B()就不同了?(问题还是在于A a=new B())
{
public A()
{
Console.WriteLine( 'A ');
}
public virtual void Fun()
{
Console.WriteLine( "A.Fun() ");
}
}
public class B: A
{
public B()
{
Console.WriteLine( 'B ');
}
public new void Fun()
{
Console.WriteLine( "B.Fun() ");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
执行结果如下:
A
B
A.Fun()
如果把class B中的Fun()的new改成override,执行结果如下:
A
B
B.Fun()
问题①:A a=new B()和B a=new B()具体有什么区别?
问题②:我知道如果是B a=new B()的话,那无论class B中Fun()是new还是override,最后输出的都会是B.Fun(),为什么换成A a=new B()就不同了?(问题还是在于A a=new B())
...全文
相关推荐
Animal A=new Dog()解释
该文档详细介绍了 Animal A=new Dog()
Java编程关于子类重写父类方法问题的理解
主要介绍了Java编程关于子类重写父类方法问题的理解,分享了有关子类重写父类的实例,具有一定参考价值,需要的朋友可以了解下。
B4A新手指南中文版
网上找的B4A教程,感觉不错,国内用B4A开发资料比较少,有什么交流的论坛吗
Python 继承,重写,super()调用父类方法操作示例
主要介绍了Python 继承,重写,super()调用父类方法,结合完整实例形式详细分析了Python面向对象程序设计中子类继承与重写父类方法的相关操作技巧,需要的朋友可以参考下
python 子类调用父类的构造函数实例
当子类继承父类后,需要调用父类的方法和属性时,需要调用父类的初始化函数。 class A(object): def __init__(self): self.nameaa = 'aa' def funca(self): print('function a %s' % self.nameaa) class B(A): def __init__(self): self.namebb = 'bb' def funcb(self): print('function b %s' % self.namebb) b = B() print(b.namebb


