java继承与多态

290 阅读1分钟

今天看了下继承和多态,总结了以下要点:

1.继承的用法

  • 子类拥有父类的非private属性和方法
  • 子类可以有自己的属性和方法
  • 子类可以重写父类的方法(override)

2.继承慎用继承

  • 父类变,子类则变
  • 破坏了封装,对于父类而言里面的属性方法对子类都是透明的
  • 继承是强耦合的关系

3.什么时候用继承

《Think in java》中提供了解决办法:问一问自己是否需要从子类向父类进行向上转型。如果必须向上转型,则继承是必要的,但是如果不需要,则应当好好考虑自己是否需要继承。

最后一句话:慎用继承

我们再来看看多态

1.基于继承的多态用法

父类引用指向子类对象:如 B extend A 则可以 A a = new B b

  • 若子类重载了父类方法,则调用父类方法
  • 若子类重写了父类的方法,则调用子类方法

注意:重载指:方法名一样, 参数和返回值类型不同

2.多态注意:

  • 由于是指向子类对象,属于向上转型,只能访问父类的属性和方法
  • 子类中存在,父类中不存在的,引用是不可以使用,重载也包括在内
  • 子类重写了父类的方法,那么则会调用子类的对象

3.多态的三个必要条件:继承,重写,向上转型

4.基于接口的多态

  • 继承都是单继承。但是接口可以是多继承多实现
  • 在接口的多态中,必须是指向这一接口的实例的引用