美文网首页
2020-12-06-Java-复习-57(面试题摘要2)

2020-12-06-Java-复习-57(面试题摘要2)

作者: 冰菓_ | 来源:发表于2020-12-19 08:02 被阅读0次

    1.编译与运行

    编译---静态绑定
    运行---动态绑定

    2.面对对象三大特性

    封装:

    继承:
    1.子类拥有父类对象所有的属性和方法(包括私有属性和私有方法) ,但是父类中的私有属性和方法子类是无法访问,只是拥有。
    2.子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
    3.子类可以用自己的方式实现父类的方法。

    多态:
    编译期多态是指方法重载,运行期多态是指方法重写和向上(下)转型
    调用哪个方法在编译成字节码的时候,是可以根据参数类型、参数个数就确定下来的。
    向上转型中,方法的调用涉及到了方法重写,此时需要先去父类中找到该方法,然后再去判断子类是否重写了该方法,如果子类重写了该方法,那么就会调用子类的方法

    java中的多态:多个子类重写父类的方法以及接口中对方法的重写

    动态绑定的前提是:

    1. 发生继承,且一个父类有多个子类。
    2. 在每一个子类中对继承自父类的同一个方法实现了重写。
    3. 发生多态,即: 父类对象变量引用了不同的子类对象。
    4. 父类的对象变量调用了重写的方法,即: 发生了动态绑定。从而实现了多的价值。
      封装性: 安全性和重用性。
      继承性: 高效性和重用性。
      多态性: 统一性(有机性)和高效性。

    3.成员变量和局部变量

    成员变量
    被static修饰的是属于类的
    没有被static修饰的是属于实例的
    局部变量是属于方法的,随着方法的调用而消失

    面试答题步骤:
    1.语法上
    2.在内存中的储存方式与生存时间
    3.成员变量没有被赋值则会自动赋值,二局部变量不会自动赋值

    4.对象相等与指向它的引用相等

    对象相等比较的内容的相等,引用相等性比较的内存中的地址值
    面试题:为什么重写了equals方法要重写hashcode方法,
    频繁地调用equals方法是浪费资源的,首先先判断hashcode是否相等,如果hashcode不相等,那么equals一定是不相等的,hashcode相等的话,值也不尽相等,存在hash冲突,所以要调用equals方法进行值的比较
    结合"==" "equals"之间的区别,总结如下'=='是比较地址值的,对于基本数据类型是值的比较,"=="的底层是比较hashcode,不重写的话,效果等同于System.identityHashCode,比较的是内存地址值,对于"equals"的用法没有重写等同于"=="的功能,为什么要提供"equals"方法,我想意义在于结构上的解耦(与hashcode结合使用),重写"equals"方法,对于对象的比较就是值的比较
    hashcode的作用,散列码,用于确定对象在散列表中的位置,加快执行的速度

    相关文章

      网友评论

          本文标题:2020-12-06-Java-复习-57(面试题摘要2)

          本文链接:https://www.haomeiwen.com/subject/gpgwwktx.html