【注1】这种情况下,把该对象强制转换为子类对象时,可以发现,如果子类中覆盖了父类的方法,那么子类的变量被改变了。如下例中。
【注2】对父类强制转换的结果和默认状态下是相同的,所以,这里只讨论对子类强制转换。 下面的两个例子混合了上述情况,体验一下,注意8~17处。 例1. public class Temp { public static void main(String[] args) { Super sub = new Sub(); sub.plus(3);//默认状态下调用被覆盖了的父类方法---------------------------------8 System.out.println(sub.i);//调用变量时强制转化,打印结果为0-----------------9 System.out.println(((Sub)sub).i);//打印结果为11--------------------------------------10 } } class Super { protected int i=0; void plus(int i) { this.i =3; } void print(){ this.i=5;
|