• Java回顾-面向对象(super与this/多态/重载与重写/equal与==)


    一、super与this的区别

     二、多态性

            对象的多态性:父类的引用指向子类的对象 ,可以直接应用在抽象类和接口上。

            Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明 该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简 称:编译时,看左边;运行时,看右边。子类可看做是特殊的父类,所以父类类型的引用可以指向子类的对象:向上转型

            比如person类是student的父类,可以这样定义:

    1. Person p = new Student();
    2. Object o = new Person();//Object类型的变量o,指向Person类型的对象
    3. o = new Student(); //Object类型的变量o,指向Student类型的对象

            一个引用类型变量如果声明父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性方法!!

    三、重载与重写

             从编译和运行的角度看:

            重载,是指允许存在多个同名方法,而这些方法的参数不同。编译器根据方法不 同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。Java的重载是可以包括父类子类的,即子类可以重载父类的同名不同参数的方法。 所以:对于重载而言,在方法调用之前,编译器就已经确定了所要调用的方法, 这称为“早绑定”或“静态绑定”;

            重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值形参都不能改变。即外壳不变,核心重写!

            对于多态,只有等到方法调用的那一刻,解释运行器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”。        

    四、equals 与 ==

            1 == 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址。

            2 equals是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。

            3 具体要看自定义类里有没有重写Object的equals方法来判断。

            4 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

  • 相关阅读:
    7_ROS命令行中的YAML
    使用 Python 中的小波变换信号驾驭股票价格的波动
    创建线程的4种方法
    如何看待AIGC技术?
    深入I/O挖矿
    搭建Spring的源码环境
    Qt QMovie和QLabel配合播放GIF表情包
    【CSS】BFC 块级格式化上下文
    cpu训练仍然提示gpu显存不够的可能原因
    Camunda 7.x 系列【54】管理服务 ManagementService
  • 原文地址:https://blog.csdn.net/weixin_62427168/article/details/125438273