注意:在执行类的所有清理动作的时候,先清理派生类的销毁方法,再清理基类的方法。
如果Java的基类中拥有某个已经被多次重载的方法,那么在导出类中重新定义该方法并不会屏蔽基类中的任意版本;
如下示例中虽然在Bart中引入了一个新的重载方法,但是Bart在Homer中的所有重载方法都是可用的。
class Homer{
char doH(char c){
System.out.println("doh(char)");
return 'h';
}
float doH(float f){
System.out.println("doF(float)");
return 1.2f;
}
}
class MilHouse{}
class Bart extends Homer{
void doH(MilHouse milHouse){
System.out.println("doH(MilHouse)");
}
}
//在子类中,可以对基类的方法进行重载,且互不影响
public class Hide {
public static void main(String[] args) {
final Bart bart = new Bart();
bart.doH(1);
bart.doH('x');
bart.doH(1.0f);
bart.doH(new MilHouse());
}
}
继承:“is-a”(是一个)的关系,即当前类属于基类。
组合:“has-a”(有一个)的关系,当前类有一个由某一基类类型的属性。