作者dream1124 (全新开始)
看板java
标题Re: [问题] 多型的修饰词?
时间Fri Dec 27 19:25:18 2013
※ 引述《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
1F:→ lovdkkkk:与 inner class 的私有物可以互通 12/27 19:37
2F:推 broodstare:谢谢大大!! 我也来想一下 12/27 23:27
3F:推 LaPass:inner class基本上无视privite之类的描述,因为都是同个物 12/28 01:10
4F:→ LaPass:件 12/28 01:11