• JavaOO 多态和抽象


    多态:相同的行为,不同的实现(重写、重载)

    多态:

    1、静态多态:编译时,系统就能确定调用的是哪个方法---使用重载实现

    2、动态多态:运行中系统才能动态确定方法所指的对象---使用动态绑定和重写实现

    动态多态的技术基础:

    引用数据类型转换的前提:不是任意引用数据类型都可以进行转换(没办法“指鹿为马”),只有有继 

                                            承关系的类才能转换。

    1、向上转型技术---自动转换类型---把小类型的对象放到大类型的引用中---没有任何风险,绝对成功

                       ---子类对象中由于包含了一个完整的父类对象部分,所以父类引用可以指向子类对象

          ---对于同一个子类对象,用父类引用指向只能看到它身上来自于父类的方法,换成子                             

              类引用指向的时候可以看到所有的方法(都要受访问修饰符限制)

          在Java中除了本类的引用指向本类的对象是绝对正确且没有特殊操作以外,父类的引用指向子类对 

          象也是绝对正确

    Object的引用可以指向所有类型的独享,它是所有类的根类

    2、向下转型技术---强制转换类型---把大类型指向的对象放到小类型的引用中---有风险,风险是编译

                                                             通过,可能运行报异常

    由于父类引用现在不仅仅能够指向父类对象,也可以指向各种子类对象;所以父类引用的变化性增大。当我们把它赋给一个子类引用时,必须强制告知这就是该子类的对象,才能编译通过。但是运行起来后,如果该父类引用指的不是该子类对象,还是会运行失败,报异常。只有该父类引用确实指向该子类对象,才会运行也成功。

    当父类引用指向子类对象时,只能看到来自父类的属性和行为

    当调用重写方法时,一定得到的是子类重写后的效果,因为对象时子类对象

    instanceof关键字:在强转之前做判断,规避掉强转之后的运行异常

    instanceof是一个运算符

    抽象:

    当一个方法只有方法的申明,没有方法的实现,这样的方法就是抽象方法

    抽象方法用abstract关键字修饰

    当一个类具备一个抽象方法,这个类就不能够再被new 对象了,这个类就叫抽象类,需要用关键字abstract修饰。

    特点:

    1、抽象类不能产生对象---1)在做类的继承设计时,当父类抽取到一定程度,就没有产生对象的必要

         了,因为所有有意义的对象,一定是属于某个子类类型的

    2)如果一个类有抽象方法,那么这个类就一定是抽象类。因为具体实际存

         在的对象不可能有抽象的内容。

    3)语法上:抽象类可以没有抽象方法,只要在类声明的地方加了abstract;

       有抽象方法的类,一定是抽象类

    2、抽象类的作用:专门用来设计为父类的---子类必须重写来自于抽象类的抽象方法,从而达到了子类

           的实现必须遵循设计人员的一支

      ---如果子类不重写抽象方法,那么该子类也只能是抽象类

    3、抽象类也是类,所以能够再其中书写属性、构造、方法

  • 相关阅读:
    ELK安装使用详细说明
    redis实现分布式锁来防止重复提交问题(redis锁)
    解决controller使用@Autowired注解注入为null问题
    oracle起定时任务
    线程池的4种拒绝策略
    线程池的3种队列区别和使用: ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue
    java Web 启动时自动执行代码的几种方式
    list集合去重的几种方式
    对List对象集合进行排序像sql的order by一样
    springboot进行动态数据源配置(基于注解方式)
  • 原文地址:https://www.cnblogs.com/wuhao-bky/p/6403868.html
Copyright © 2020-2023  润新知