隐式转换

来源:互联网 发布:沈阳金蝶软件 编辑:程序博客网 时间:2024/05/31 06:21
1.隐式转换隐式类型转换所谓隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需人为干预。因此,在表达式中如果有不同类型的数据参与同一运算时,编译器就在编译时自动按照规定的规则将其转换为相同的数据类型。C语言规定的转换规则是由低级向高级转换。2.因为派生类必然具有基类的所有成员所以派生类可以毫无疑问地转换为基类...反过来基类因为可能(注意仅仅是可能)不包含派生类的成员所以不能直接转换...就算派生类和基类完全一样没有增加新成员但是你知道编译器不知道3.这是很明显的道理嘛!比如:class Father{public void A();}class Sun:Father{public void B();}显然,Sun类是不是有A,B两个方法?而Father只有A方法Father f=new Father();//只能在其上调用A方法,而不能调用B方法,因为Father根本没定义B方法如果按你的逻辑,父类到子类的转换是合法的,那么:Sun s=f;或者Sun s=new Father();从形式上说,你可以在s上调用B方法,但实际上s引用的是new Father(),怎么可能调用B方法?根本就没定义!而反过来就不会出现任何问题:Sun s=new Sun();//可以在s上调用A,B方法Father f=s;或者Father f=new Sun();//从形式上就只能调用A方法,虽然引用的对象是Sun,但是不能调用,这只不过是“大材小用”,而不是刚才那种“无中生有”!
原创粉丝点击