1.上转型对象
若B是A的子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到类A声明的对象中时,那么就称对象a是子类对象b的上转型对象.
上转型对象不能操作子类声明定义的成员变量(失掉了这部分属性),不能使用子类声明定义的方法(失掉了一些功能)和新增的属性。(通过动态绑定实现)
- 上转型对象可以代替子类对象去调用子类重写的实例方法。如果子类重写的方法是实例方法,那么上转型对象调用重写的方法时,就是通知对应的子类对象去调用这些方法。因此,如果子类重写了父类的某个实例方法后,子类对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。
- 上转型对象可以调用子类继承的成员变量和隐藏的成员变量。
2. 接口回调
在应用开发中,接口回调机制是一种常用的设计手段,也可以说是一种处理问题的模型,类之间,模块之间,都有一定的调用关系,一般来说,可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法,实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这个调用的过程称为接口的回调。(利用Java的多态机制,java虚拟机自然会去找实现接口的子类,调用其子类中已经重载的该方法)