定义:为类提供新的方法并不是继承技术中最重要的方面,最重要的方面是新的类和基类之间的关系,新类是现有类的一种类型!基类的引用指向导出类的动作称为向上转型。
public class Demo6 {
public static void main(String[] args) {
F f = new S();
f.fun(f);
f.getFun(f);
// f.sunFun();--报错
}
}
class F {
public void fun(F f) {
System.out.println("father fun...." + f);
}
public void getFun(F f) {
System.out.println("father getFun....");
}
public String toString() {
return "father";
}
}
class S extends F {
public void getFun(F f) {
System.out.println("SON getFun...." + f);
}
public void sonFun() {
System.out.println("sonfun....");
}
public String toString() {
return "son";
}
}
结果:father fun....son
SON getFun....son
向上转型丢失了子类中新添加的方法,会调用子类中重写的方法!
在选择组合和继承的时候,一个最清晰的办法就是要确定是否新类向基类进行向上转型,如果必须要向上转型,那么用继承就是必要的,否则就需要考虑是否要用继承,因为java支持单继承多实现!