Day06_27_多态

多态

  • 最关键一句话: 父类引用 指向(=) 子类对象 Animal a = new Cat();

  • 什么是多态?

    官方说:

    • 接口的多种不同的实现方式即为多态。

    • 多态性是允许你将父对象设置成为一个或更多的与他的子对象相等的技术。(父类等于子类)

    • 我们在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行期间才确定。就是这个引用变量究竟指向哪一个实例对象,在编译期间是不确定的,
      只有运行期才能确定,这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。

      Day06_27_多态

      说人话:

      • 允许将子类类型的指针赋值给父类类型的指针,把不同的子类对象都当作父类来看。多态面向的是对象,指的是对象的多态性。

      • 比如你家有亲属结婚了,让你们家派个人来参加婚礼,邀请函写的是让你爸来,但是实际上你去了,或者你妹妹去了,这都是可以的,因为你们代表的是你爸,但是在你们去之前他们也不知道谁会
        去,只知道是你们家的人。可能是你爸爸,可能是你们家的其他人代表你爸参加。这就是多态。

  • 多态的分类

    - 多态又分为 编译时多态和运行时多态。
    
    - 编译时多态:比如重载
    
    - 运行时多态:比如重写
    
  • 多态规则

    • 子类继承父类,也就继承了父类的方法,如果在继承的基础上使用多态,这时父类引用指向子类对象, 在这种情况下, 如果子类中没有重写该方法,那么子类和父类都会使用父类中的该方法;
      如果子类中重写了该方法,那么子类和父类都会调用子类中经过重写的该方法。

    • 对象能执行哪些方法主要看等号左边的类型

    • 子类只能执行自己独有的或者继承父类的方法

    • 父类引用可以指向子类对象,但是不能调用子类中独有的方法。

上一篇:Note_Logistics_Day06


下一篇:day06