daxia108 发表于 2003-7-16 21:21

来道java的测试题

呵呵,上周我们java的klausur刚刚考的。虽然是一道小题,却放倒了80%的大众,偶也惨遭毒手。大家也来做做试试

class A {
   void m() {
      if (this instanceof A) {
         System.out.println(“Ich bin ein A Objekt”);
      }
      if (this instanceof B) {
         System.out.println(“Ich bin ein B Objekt”);
      }
}

class B extends A {
   void m() {
      super.m();
   }
   public static void main(String[] args) {
      A a = new B();
      a.m();
   }
}


问:输出结果是什么?并且给出理由先

li6bonn 发表于 2003-7-16 21:46

我试过了,好像程序运行不出来

daxia108 发表于 2003-7-16 22:00

拜托,这是道考题阿。要是上机去编译,那就根本不需要考了

tweete 发表于 2003-7-16 22:16

Ich bin ein B Objekt 吧

edc 发表于 2003-7-16 22:17

秋秋 发表于 2003-7-16 23:00

daxia108 发表于 2003-7-17 17:34

最初由 tweete 发布
Ich bin ein B Objekt 吧

呵呵,我回答的也是B Objekt ,以为产生的是B对象,那么输出的一定是B

daxia108 发表于 2003-7-17 17:36

回复: 答案

最初由 edc 发布
output:
I...

你的答案是对的,但是考的重点不是Super,而是对象产生语句 A a = new B(); 

daxia108 发表于 2003-7-17 17:37

Loesung:

Ich bin ein A Objekt
Ich bin ein B Objekt

Grund :

       Zuerst wird ein B Objekt erzeugt, auf das eine Objektreferenz vom Typ A zeigt, dann wird die m Methode des Objekts B aufgerufen. Diese Methode ruft via super die m Methode von A auf. Da ein B Objekt auch gleichzeitig ein A Objekt ist, werden beide Ausgaben ausgegeben.

edc 发表于 2003-7-17 23:22

页: [1] 2
查看完整版本: 来道java的测试题