//测试 publicclassNewJavaTest{ publicstaticvoidmain(String[] args){ Person p = new Man();//向上转型。编译看左,运行看右 p.outAge(); //同方法名,输出的是子类中的方法 p.outName(); //输出的是子类中的方法 }
//测试 publicclassNewJavaTest{ publicstaticvoidmain(String[] args){ Person p = new Man();//向上转型。编译看左,运行看右 p.outAge(); //同方法名,输出的是子类中的方法 p.outName(); //输出的是子类中的方法 Man m = new Man(); m = (Man) p; //向下转型 m.out(); }
} //输出 男人的年龄 男人的姓名 男人
当在转型时,可能是会转型失败的。所以,需要来判断一下关系。用 instanceof 。
将上例中的测试代码改正一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
publicclassNewJavaTest{ publicstaticvoidmain(String[] args){ Person p = new Man(); p.outAge(); p.outName(); if(p instanceof Person){ //判断 p 是否是 Person,如果是则进行转型,否则不进行。 Man m = new Man(); m = (Man) p; m.out(); } }