class A { public virtual void test1() { cnosole.writeline("test1 in A"); } } class B { public override void test1() { cnosole.writeline("test1 in B"); } }
main() { B b=new B(); A a1=new B(); A a2=(A)b; }
请问各位大神A a1=new B()、和A a2=(A)b,有什么区别
new是创建新实例,第二个是转换,这样a2和b是同一个东西,修改任何一个,都会影响到另一个
就是一样的了,你要是调同样的方法都是调用B类的那个test1 in B 因为他被overwrite了
a1,a2使用起来一样的。
如果要扣细了的话,那你先new 一个B, 然后又 A a2= (A)b; 中间不是多了一步吗?而且多了一个变量b。 其他没什么。
|