记住一句话:“重写看(调)对象” 这是我的老师说的,哈哈!比如: Class B : A A object = new B(); object.PrintString(); (PrintString() A、B里都有) 如果PrintString()在B中被override过了,就调用B里的方法。否则,会调用A中的方法。不管是谁引用,只要该对象的(被调)方法被override过,肯定是调用对象的方法。 而调用没有被override过的方法时,会调用引用类型的方法。要想更明白的话,可以在new那里价格端点,一步一步执行,看看过程可能更容易理解。祝你好运!
是不是实例化时,只走构造函数,B中的public override void PrintFields()是不运行的,对吗??
这是我的老师说的,哈哈!比如:
Class B : A
A object = new B();
object.PrintString();
(PrintString() A、B里都有)
如果PrintString()在B中被override过了,就调用B里的方法。否则,会调用A中的方法。不管是谁引用,只要该对象的(被调)方法被override过,肯定是调用对象的方法。
而调用没有被override过的方法时,会调用引用类型的方法。要想更明白的话,可以在new那里价格端点,一步一步执行,看看过程可能更容易理解。祝你好运!
只说实例化时还要ss.PrintString();吗?是不是问的有点弱智,但是我就是不明白,谢谢了!