【发布时间】:2014-08-31 21:35:18
【问题描述】:
为什么java的创造者允许这种情况?我相信这一定是有原因的。我下面的代码可以让 Lion 像 Cheetah 一样调皮地跑。
public class animal {
class carnivores {
private final void runAsFastAsCheetah() {
System.out.println("Ran as fast as Cheetah");
}
}
public class Lion extends carnivores {
public void runAsFastAsLion() {
System.out.println("Ran as fast as Lion.");
super.runAsFastAsCheetah();
}
}
public static void main(String[] args) {
animal animal = new animal();
Lion lion = animal.new Lion();
//lion.runAsFastAsCheetah(); //Not allowed but//
lion.runAsFastAsLion();
}
}
编辑:对于那些认真对待狮子和猎豹的人,我已经修改了代码。
public class foo {
class A {
private final void myMethod() {
System.out.println("in private final myMethod()");
}
}
public class B extends A {
public void myMethod() {
System.out.println("in B's myMethod()");
super.myMethod();
}
}
public static void main(String[] args) {
foo foo = new foo();
B b = foo.new B();
b.myMethod();
}
}
【问题讨论】:
-
嗯..你觉得怎么样?
private这个词是什么意思? :) -
这里唯一的问题是为什么所有食肉动物都能像猎豹一样跑得快。
-
看,这只是一个例子。赦免。但这是一个有效的问题。
-
需要编辑。它的 private final 不是 static final
-
@chrylis 已经完成了。
标签: java private inner-classes final overriding