本想绕过父类,调用父类的父类函数,但是编译不过老是报错,百度了下论坛里面盖楼很高,解释都各不一样,现在把个人理解的比较全面的认识写下:
JAVA中不许super.super,只是由运算符.的严格语义来限制的(即:.是成员访问运算符,只有成员访问才能用。而this,super不是成员,故就不能使用this.this或this.super或super.this)
实现方案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class
B
extends
AA{
public
void
f(){
System.out.println(
"B.f()"
);
}
public
final
void
super_f()
{
super
.f();
}
}
class
C
extends
B{
public
void
f(){
super
.f();
//如果要想在此处调用 AA中的 f()。应该怎么弄啊?
super
.super_f();
System.out.println(
"C.f()"
);
}
}
|
由于:public final void super_f()加了final,因而重写倒不担心了。