前提:A类是B类的父类
问题:
A a = new B();
是不是等同于
B b = new B();
A a = (A)b;//或者是 A a = b;
我是从asp转过来的。这两天被这个问题弄混了头,希望大家不吝赐教,也希望高手能把多态这块给咱好好洗洗脑!
问题:
A a = new B();
是不是等同于
B b = new B();
A a = (A)b;//或者是 A a = b;
我是从asp转过来的。这两天被这个问题弄混了头,希望大家不吝赐教,也希望高手能把多态这块给咱好好洗洗脑!
显示和隐士转换
http://txhelp.net
等同于B b = new B();
A a = (A)b;或者是
A a = b;
楼上的人都new B();
A a = new B(); 父类指向子类
是等同于
B b = new B();
A a = (A)b;//或者是 A a = b;
这个对吗,好像不对吧
B b=(B)a才对吧
那么做能有什么好处?还是能多出什么方法?
这篇文章很值得看的
理解的很透彻
看了会明白很多
当B继承A里方法时,如果A中是 virtual 的,B中用 override 和 new 两个关键词来重写的时候,再调用该方法就会产生不同的结果了。
问题:
A a = new B();
是不是等同于
B b = new B();
A a = (A)b;//或者是 A a = b;
我是从asp转过来的。这两天被这个问题弄混了头,希望大家不吝赐教,也希望高手能把多态这块给咱好好洗洗脑!
不完全等同,A a = new B(); 不能使用B类自己添加的方法.比如 public abstract class A
{
public string Method()
return "A method";
}public class B:A
{
public string MyMethod()
return "B method";
}
这时候A a=new B();则不能使用MyMethod方法
mytype m1 = new mytype();object o ;
mytype m2;
yourtype t1;o=m1; //m是o的子类型,可以隐式转换
m2=(mytype)o ; //o是m的父类型,不能隐试转换,要强制转换t1=(yourtype)o; //这个在编译时是不会报错的,但运行时会出错,因为o指向的对象实际是mytype
//是不能转为yourtype的关于多态,那就需要虚函数了。也是挺复杂的东西,还是先吧这弄清楚把
mytype m1 = new mytype();object o ;
mytype m2;
yourtype t1;o=m1; //m是o的子类型,可以隐式转换
m2=(mytype)o ; //o是m的父类型,不能隐试转换,要强制转换t1=(yourtype)o; //这个在编译时是不会报错的,但运行时会出错,因为o指向的对象实际是mytype
//是不能转为yourtype的关于多态,那就需要虚函数了。也是挺复杂的东西,还是先吧这弄清楚把
顶这文章,好东西
是不是等同于
B b = new B();
-----------------------
不尽然,B类的方法a不可以调用
如果A类有虚函数,B类重写了,则b调用的是自已重写的,a调用的也是自已的A a = (A)b;//或者是 A a = b;
--------类型转换,a指向b
A a = new B();
是不是等同于
B b = new B();
A a = (A)b;
或者
B b = new B();
A a = b;
多谢指点
这不明明是调用构造函数 A::A(B *) 么
怎的诸兄皆言继承 多态 云云?
仔细一看,,原来C#,,晕!!
问题:
A a = new B(); ___________能这么写吗?