• 多态和重写java


    多态

                 多态:同一个事物,作用条件不一样,结果不一样

    多态:同一个父类引用,指向不同的子类实例,执行不同的操作

       方法重写是实现多态的前提

      

    多态实现步骤:

       1)在抽象父类中定义抽象方法

       2)子类继承抽象父类并重写父类中所有的抽象方法

       3)测试类中创建父类引用指向不同的子类实例,父类引用调用方法,调用的是子类重写后的那些方法

                     向上转型(自动类型转换):父类的引用指向子类的实例

                     向下转型(强制类型转换):子类的引用指向父类的引用

                    

       父类的引用无法调用子类里独有的方法,必须使用向下转型成对应的子类,才能通过子类去调用子类中独有的方法

       在向下转型的时候,容易出现ClassCastException(类型转换异常),原因是将父类引用转换成了不匹配的子类对象

       可以通过instanceof关键字类判断父类引用指向的是哪一个子类实例,从而避免类型转换异常

    方法重写

               什么是方法重写

                 

    1. 方法的重写或方法的覆盖(overriding
      1. 子类根据需求对从父类继承的方法进行重新编写
      2. 重写时,可以用super.方法的方式来保留父类的方法
      3. 构造方法不能被重写

    方法重写规则

     方法名相同

    1. 参数列表相同
    2. 返回值类型相同或者是其子类
    3. 访问权限不能严于父类
    4. 父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法
    5. 子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(注:静态方法中无法使用super)
    6. 父类的私有方法不能被子类覆盖
    7. 不能抛出比父类方法更多的异常

    方法重写和方法重载的比较

             

                                                           

    Object

    1.                Object类是所有类的父类

    Object 类中的equals方法

      1.             比较两个对象是否是同一个对象,是则返回true
      2. 操作符==
        1. 简单数据类型,直接比较值。如1==2
        2. 引用类型,比较两者是否为同一对象

    1Object类的equals()方法与==没区别

    2)当有特殊需求,如认为属性相同即为同一对象时,需要重写equals()

    3Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值

    instanceof用于判断一个引用类型所引用的对象是否是一个类的实例

    为什么要使用多态

              频繁修改代码 代码可拓展性 可维护性差

      使用多态优化

  • 相关阅读:
    ​Segment-and-Track Anything——通用智能视频分割、跟踪、编辑算法解读与源码部署
    postman和jmeter的区别何在?
    CPF 使用C#的Native AOT 发布程序
    项目管理中,项目干系人的角色和责任
    【入门-04】中断系统
    MATLAB算法实战应用案例精讲-【采样路径规划算法】PRM算法(附MATLAB、C++和Python等源码)
    【开发篇】二十三、SpringBoot Admin端点指标控制以及自定义端点
    【数据分享】全国县市2000-2020年医疗卫生机构床位数数据(excel和shp格式)
    CAS:1445723-73-8 DSPE-PEG-NHS 磷脂-聚乙二醇-活性酯脂质PEG共轭物供应
    关于在x64系统下使用MSSQL导入导出工具读取Excel报错的一个坑
  • 原文地址:https://blog.csdn.net/qq_52153640/article/details/126192423