java 父类、子类 类型转换【父类不能转为子类】
2010-07-19 19:27
281 查看
java 父类不能转为子类
Base bs = new Sub();
本人理解: new Sub(); 的过程中 先去执行sub的 父类的构造方法 , 再去执行sub的构造方法
所以可以这么转型
而 Sub sb = (Sub) new Base(); 仅仅执行sub的父类Base 的构造方法
所以。。。。。。。。。。。。。。
故而转型失败。。。。。。。
仅仅是揣测!!!
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 的构造方法
所以。。。。。。。。。。。。。。
故而转型失败。。。。。。。
仅仅是揣测!!!
相关文章推荐
- Java 父类与子类 类型转换
- java搜索 里 可以把一个父类强制转换成一个子类 不能把一个子类强制转换成一个父类? 对吗?
- Java中父类和子类的类型转换解惑
- Java初涉之2--父类和子类的类型转换
- .“在JAVA中,异常子类必须在它们任何父类之前使用,因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,后面运行子类的catch语句将永远不会到达。而且,Java中不能到达的代码是一个错误。”
- java中如何让一个子类不能调用从父类继承的方法
- oracle.sql.CLOB不能转换成oracle.sql.CLOB类型的异常 java.lang.ClassCastException: oracle.sql.CLOB
- java 父类 子类 相互转换
- java 父类强制转换为子类
- java:当父类无无参构造函数并且有其他构造函数时,子类不能调用默认构造函数
- java继承实质、父类引用指向子类对象(多态)、声明时类型、运行时类型
- Java对图片的处理---缩放图像、图像切割、图像类型转换、彩色转为黑白
- Java子类强制转父类类型不会变
- Rhyme/关于Java子类不能缩小父类方法可见性的问题
- Java子类与父类的转换
- java多态情况下通过类型转换访问子类特有的成员
- 为何Java中子类重写方法的访问权限不能低于父类中权限
- java 子类与父类 转换
- 为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
- 5.1 父类和子类的类型转换总结