Re: [問題] 多型的修飾詞?
※ 引述《broodstare (交給C4就對了)》之銘言:
: ========================================================================
: class Base2{
: private void foo(){
: System.out.println("Base2");
: }
: }
: class Derived2 extends Base2{
: public void foo(){
: System.out.println("Derived2");
: }
: }
: public class Practice {
: static void basefoo(Base2 b){
: b.foo();●
: }
: static void derivefoo(Derived2 d){
: d.foo();
: }
: public static void main(String[] args) {
: basefoo(new Derived2());
: derivefoo(new Derived2());
: }
: }
剛試了一下印證我的想法....
如果這個例子是在教你多型,誠懇建議你換教材學 Java,
這個例子根本連編譯都過不了,更別說執行。
編譯器會直接告訴你找不到 Base2 的 foo 方法,
這不令人意外因為 Base2 的 foo 本來就是 private 方法。
實驗過程中倒是意外發現有趣的事,以下這個相似的例子,結果卻能執行,
命令列會印出
private foo
public foo
請問各位鄉民們會怎麼解釋這個結果?
public class PolyTest {
public static void runBase(Base base){
base.foo();
}
public static void runDes(Descendent des){
des.foo();
}
public static void main(String[] args){
PolyTest poly = new PolyTest();
runBase(poly.new Descendent());
runDes(poly.new Descendent());
}
public class Base {
private void foo(){
System.out.println("private foo");
}
}
public class Descendent extends Base{
public void foo(){
System.out.println("public foo");
}
}
}// polyTest end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.102.112
→
12/27 19:37, , 1F
12/27 19:37, 1F
推
12/27 23:27, , 2F
12/27 23:27, 2F
推
12/28 01:10, , 3F
12/28 01:10, 3F
→
12/28 01:11, , 4F
12/28 01:11, 4F
討論串 (同標題文章)