Java中的重载和覆盖
//-----
假想Java编译处理继承的
class F{
public int age;
public void out();
public void in();
}
class S extends F{
public int age;
public void out();
public void fs();
}
class X extends S{
public int age;
public void out();
public void fs();
}
class O{
}
F:
属性:
F.age
函数:
F.out
F.in
S:
属性:
F.age
S.age
函数:
S.out //覆盖掉了F.out
F.in
S.fs
F f;
S s;
X x;
O o;
x = (X)s; //编译正确,因为你告诉编译器这样处理。运行时出现ClassCastException异常
o = (O)s; //编译错误,编译不可能是完全的傻瓜。他们不是父子关系。
所有的函数
x.age = 32; // 从引用类开始。从X类开始开始找,并且沿路径往上找。
x.out() ; //从被引用类开始。从S类开始找,并且沿路径往上找。
在一个方法中用到一个属性,则从当前类开始找,且沿路径往上找。