一种方法:
public class B extends A {
public void doB(){
System.out.println("I am doB");
} public B() {
doB();
}
}
public class B extends A {
public void doB(){
System.out.println("I am doB");
} public B() {
doB();
}
}
(B)a.doB();
实际上这个问题是这样的,我需要一个统一的入口操作所有由基类继承出来的类。
举个例子:
比如存在一个方法doSometing(A a){
a.doA();//就是上面类B继承类A的方法
a.doB();//类B自有的方法
}而这个a的实例是从一个静态抽象工厂里面产生的,然后我用一个配置文件决定到底要产生什么样的实例。
doSomething(B b) {
B b = new B();
b.doA();
b.doB();
}
A a=new B();
a.doA();
((B)a).doB();//再加个括号,这个是我在JB2005运行通过的。 }
}
编译时类型不影响运行结果,只要是对象都可以声明为Object类型.
但是编译器不会让你调用编译类型不匹配的方法