申明:转载自牛客网
class
Car
extends
Vehicle
{
public
static
void
main (String[] args)
{
new
Car(). run();
}
private
final
void
run()
{
System. out. println (
"Car"
);
}
}
class
Vehicle
{
private
final
void
run()
{
System. out. println(
"Vehicle"
);
}
}
输出结果:Car
分析:
此题的父类方法有private修饰,所以对子类不可见,子类不能覆盖。所以子类方法和父类是两个方法。
扩展:如果父类方法将private改为public 会怎样?
会报错,因为父类方法有final修饰,不能被覆盖。
扩展:
class
Shape {
private
Shape wf;
protected
Shape() {
wf =
this
;
}
private
int
length() {
return
0
;
}
private
int
width() {
return
0
;
}
public
int
getArea() {
return
wf.length()*wf.width();
}
}
public
class
OverridingShape
extends
Shape {
public
int
length() {
return
10
;
}
//@Override 不是覆盖,基类该方法是private,子类不可见
public
int
width() {
return
10
;
}
public
static
void
main(String[] args) {
Shape s=
new
OverridingShape();
System.out.println(s.getArea());
//结果是0而不是100 调用的是父类的方法,然后访问的是父类的private方法
}
}