您的位置:首页 > 编程语言 > Java开发

java 父类、子类 类型转换【父类不能转为子类】

2010-07-19 19:27 281 查看
java 父类不能转为子类

package tao.test;

class Base {
	public String str = "hello Base...";
	public void hello(){
		System.out.println(str);
	}
}
class Sub extends Base{
	public String str = "hello Sub...";
	public void hello(){
		System.out.println(str);
	}
}

public class BaseSubTest{
	public static void main(String[] args) {
		Base base = new Base();
		base.hello();				//	hello Base...
		System.out.println(base.str);// hello Base...
		
		Sub sub = new Sub();		// hello Sub...
		sub.hello();				// hello Sub...
		System.out.println(sub.str);
		
		Base bs = new Sub();		
		System.out.println(bs.getClass());//class tao.test.Sub
		bs.hello();					// hello Sub...
		System.out.println(bs.str);	// hello Base...
		
		Sub s = (Sub) bs; 
		s.hello();					// hello Sub...
		System.out.println(s.str); 	// hello Sub...
		
		//Sub sb = (Sub) new Base(); 
		//System.out.println(sb.getClass());  // error
		//sb.hello();  //// error
		
	}
}


Base bs = new Sub();

本人理解: new Sub(); 的过程中 先去执行sub的 父类的构造方法 , 再去执行sub的构造方法

所以可以这么转型

而 Sub sb = (Sub) new Base(); 仅仅执行sub的父类Base 的构造方法

所以。。。。。。。。。。。。。。

故而转型失败。。。。。。。

仅仅是揣测!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐