今天看了下继承和多态,总结了以下要点:
1.继承的用法
- 子类拥有父类的非private属性和方法
- 子类可以有自己的属性和方法
- 子类可以重写父类的方法(override)
2.继承慎用继承
- 父类变,子类则变
- 破坏了封装,对于父类而言里面的属性方法对子类都是透明的
- 继承是强耦合的关系
3.什么时候用继承
《Think in java》中提供了解决办法:问一问自己是否需要从子类向父类进行向上转型。如果必须向上转型,则继承是必要的,但是如果不需要,则应当好好考虑自己是否需要继承。
最后一句话:慎用继承
我们再来看看多态
1.基于继承的多态用法
父类引用指向子类对象:如 B extend A 则可以 A a = new B b
- 若子类重载了父类方法,则调用父类方法
- 若子类重写了父类的方法,则调用子类方法
注意:重载指:方法名一样, 参数和返回值类型不同
2.多态注意:
- 由于是指向子类对象,属于向上转型,只能访问父类的属性和方法
- 子类中存在,父类中不存在的,引用是不可以使用,重载也包括在内
- 子类重写了父类的方法,那么则会调用子类的对象
3.多态的三个必要条件:继承,重写,向上转型
4.基于接口的多态
- 继承都是单继承。但是接口可以是多继承多实现
- 在接口的多态中,必须是指向这一接口的实例的引用