【发布时间】:2023-08-04 02:07:01
【问题描述】:
我有一个简单的程序如下:
class Foo {
private final String str = getClass().getSimpleName();
protected void print(){
System.out.println(str);
}
}
class Bar extends Foo {
private final String str = getClass().getSimpleName();
@Override
protected void print(){
super.print();
System.out.println(str);
}
}
class FooBarMain {
public static void main(String[] args){
Foo foo = new Foo();
foo.print();
Foo foobar = new Bar();
foobar.print();
Bar bar = new Bar();
bar.print();
}
}
输出:
福
酒吧
酒吧
酒吧
酒吧
不应该输出如下吗?
福
福
酒吧
福
酒吧
查看输出,似乎str 已在派生类中被覆盖。但,
str 是最终的和私有的。没有办法可以覆盖它。谁能帮我?
【问题讨论】:
标签: java oop inheritance overriding derived-class