上海群碩軟件公司的一道Java筆試題
原題地址:點(diǎn)擊查看
要求是寫(xiě)出結(jié)果,并說(shuō)明為什么。
據(jù)回憶程序是這樣的:
package org;

public class Test
{

public static void main(String[] args)
{
A a = new B();
a.print();
}

}

class A
{
private int i = 1;
public A()
{
int i = 2;
}
public void print()
{
System.out.println("The result is:" + i);
}
}

class B extends A
{
private int i = 3;
public B()
{
int i = 6;
}
public void print()
{
System.out.println("The result is:" + i);
}
}
輸出結(jié)果是:3
此題考查的是多態(tài).
在這里是父類的引用指向子類的對(duì)象.
父類的引用只能訪問(wèn)子類和父類共有的
方法.
這個(gè)程序我通過(guò)Eclipse和Debug程序觀察它的
執(zhí)行順序是這樣的:
package org;

public class Test
{

public static void main(String[] args)
{
A a = new B();
a.print();
}

}

class A
{
//3
private int i = 1;
//2
public A()
{
//4
int i = 2;
}
public void print()
{
System.out.println("The result is:" + i);
}
}

class B extends A
{
//5
private int i = 3;
//1
public B()
{
//6
int i = 6;
}
public void print()
{
System.out.println("The result is:" + i);
}
}
現(xiàn)在將程序稍微改動(dòng)一下:
package org;

public class Test
{

public static void main(String[] args)
{
A a = new B();
a.print();
}

}

class A
{
//3
private int i = 1;
//2
public A()
{
//4
int i = 2;
}
public void print()
{
System.out.println("The result is:" + i);
}
}

class B extends A
{
//5
private int i = 3;
//1
public B()
{
//6
int i = 6;
}
public void print2()
{
System.out.println("The result is:" + i);
}
}
這時(shí)輸出結(jié)果就是1了.
因?yàn)楦割惖囊脽o(wú)法訪問(wèn)子類獨(dú)有的方法.
要求是寫(xiě)出結(jié)果,并說(shuō)明為什么。
據(jù)回憶程序是這樣的:










































此題考查的是多態(tài).
在這里是父類的引用指向子類的對(duì)象.
父類的引用只能訪問(wèn)子類和父類共有的
方法.
這個(gè)程序我通過(guò)Eclipse和Debug程序觀察它的
執(zhí)行順序是這樣的:















































現(xiàn)在將程序稍微改動(dòng)一下:















































這時(shí)輸出結(jié)果就是1了.
因?yàn)楦割惖囊脽o(wú)法訪問(wèn)子類獨(dú)有的方法.
posted on 2007-12-09 15:54 々上善若水々 閱讀(2104) 評(píng)論(0) 編輯 收藏