java中向上转型(upcast)和向下转型(downcast)

class Useful { int value = 20; public void f() {System.out.println("f() in the Useful class");} public void g() {System.out.println("g() in the Useful class");} } class MoreUseful extends Useful { int value = 21; public void f() {System.out.println("f() in the MoreUseful class");} public void g() {System.out.println("g() in the MoreUseful class");} public void u() {System.out.println("u() in the MoreUseful class");} public void v() {} public void w() {} } class MoreUseful2 extends Useful { int value = 21; public void f() {System.out.println("f() in the MoreUseful2 class");} public void g() {System.out.println("g() in the MoreUseful2 class");} public void u() {System.out.println("u() in the MoreUseful2 class");} public void v() {} public void w() {} } class ExtendsMoreUseful2 extends MoreUseful2 { int value = 22; public void f() {System.out.println("f() in the ExtendsMoreUseful2 class");} public void g() {System.out.println("g() in the ExtendsMoreUseful2 class");} public void u() {System.out.println("u() in the ExtendsMoreUseful2 class");} public void v() {} public void w() {} } public class RTTI { public static void main(String[] args) { //Useful useful = new MoreUseful(); //useful.u(); //这是错误的,u()方法没有在useful类型中调用。 Useful[] x = { new Useful(), new MoreUseful(), new MoreUseful2(), new ExtendsMoreUseful2() }; //声明一个变量数组,保存每个Useful对象的引用, //那么每一个Useful对象就会自动向上转型为Useful。 for(int i=0;i

你可能感兴趣的:(java)