• 多态和重写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用于判断一个引用类型所引用的对象是否是一个类的实例

    为什么要使用多态

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

      使用多态优化

  • 相关阅读:
    【0234】PgBackendStatus 记录当前postgres进程的活动状态
    教你用python制作人脸卡通画(附源码)
    StoneDB 亮相中国信通院OSCAR开源产业大会,石原子科技正式加入科技制造开源社区!
    【办公软件】案例:电路中计算出的电阻值为5欧,怎么通过Excel匹配到仓库里最接近的电阻值?
    如何学习一个大型分布式Java项目
    这玩意儿都能优化?果然是细节都在魔鬼里。
    计算摄像技术01 - 摄像技术基础知识
    jvm 类和类加载器 、双亲委派模型、自定义类加载器
    DBCO-PEG-sulfadimethoxine 二苯并环辛炔-聚乙二醇-磺胺地索辛 DBCO-PEG-磺胺地索辛
    [C++]运算符重载和普通函数区别
  • 原文地址:https://blog.csdn.net/qq_52153640/article/details/126192423