来道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();
}
}
问:输出结果是什么?并且给出理由先 我试过了,好像程序运行不出来 拜托,这是道考题阿。要是上机去编译,那就根本不需要考了 Ich bin ein B Objekt 吧 最初由 tweete 发布
Ich bin ein B Objekt 吧
呵呵,我回答的也是B Objekt ,以为产生的是B对象,那么输出的一定是B
回复: 答案
最初由 edc 发布output:
I...
你的答案是对的,但是考的重点不是Super,而是对象产生语句 A a = new B(); 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.
页:
[1]
2