我一直在研究超类构造函数调用多态方法的代码。
现在,您知道OrderManager类的方法startUp是否与其自己的类或CorbaComponent类的变量ior一起使用?
由于
class CorbaComponent {
String ior;
CorbaComponent() {startUp("IOR");}
void startUp(String s){ior = s;}
void print() {System.out.println(ior);}
}
class OrderManager extends CorbaComponent {
OrderManager(){}
void startUp(String s) {ior = getIORfromURL(s);}
String getIORfromURL(String s) {return "URL://" + s;}
}
public class Application {
public static void main(String[] args) {start(new OrderManager());}
static void start (CorbaComponent cc) {cc.print();}
}
答案 0 :(得分:0)
在java中,字段扩展是不可能的。如果声明一个字段,则根据其范围按定义可用。如果在扩展类中声明辅助字段,那么它将是合乎逻辑的,并且可以被java接受。
至于回答您的问题,在这种情况下,因为您从print
的结构调用方法CorbaComponent
,您将看到ior
中定义的CorbaComponent
的值。由于没有字段继承,因此定义od ior
仅限于子类OrderManager
。
如果你打算使用自己的变量(不要混淆 - 因为没有字段继承)。您必须在子类中扩展print
方法。