class Useful{ public void f(){ System.out.println("Useful f()"); }; public void g(){ System.out.println("Useful g()"); }; } class MoreUseful extends Useful{ public void f(){System.out.println("MoreUseful f()");}; public void g(){System.out.println("MoreUseful g()");}; public void u(){System.out.println("MoreUseful u()");}; public void v(){System.out.println("MoreUseful v()");}; public void w(){System.out.println("MoreUseful w()");}; } public class RTTI { public static void main(String[] args) { Useful[] x = {new Useful(),new MoreUseful()}; x[0].f(); //正确,输出:Useful f() x[1].f(); //正确,输出:MoreUseful f(),这里体现了多态的概念 // x[0].u(); //错误,Useful类型没有u()方法 // x[1].u(); //错误,向上转型,丢失方法:Useful类型没有u()方法 // ((MoreUseful) x[0]).u(); //错误,无法直接向下转型,抛出异常 ((MoreUseful) x[1]).u(); //正确,向上转型后,能成功向下转型,输出:MoreUseful u() } }