子类转父类:
让父类的引用指向子类的引用就可以转换。除了构造方法以外子类继承了父类的所有,所以父类指向子类是没问题的。
Son s = new Son(); Father f = s;
上段代码中s是子类的引用,f是父类的引用,虽然s和f都指向了Son类的对象,但是意义却不同。对于引用s,它会把这个对象当做Son类的对象,而引用f会把这个当做Father类的对象。引用s可以随意访问这个对象中的内容,但是引用f却只能访问Father类中有的内容,不能访问子类中多出的内容。这就达到了子类转换成父类的效果,从引用f来看,这个对象就是父类对象,所以说是子类转成了父类。
父类转子类:
父类转子类的前提是,父类的引用必须指着子类的对象,向上边图的f一样,进行转换加括号即可。原来以f的视角来看,指向的是父类的对象,转换后f指的就是子类的对象,跟引用s一个效果,代码如下
Son s = new Son(); Father f = s; Son convert = (Son) f;