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

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的作用,散列码,用于确定对象在散列表中的位置,加快执行的速度

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、进程和线程 地址空间和其他资源:进程间相互独立,进程中包括多个线程,线程间共享进程资源,某进程内的线程在其他进...
    德胜_fed7阅读 315评论 0 3
  • 1、 Java语言有哪些特点 (1)简单易学、有丰富的类库 (2)面向对象(Java最重要的特性,让程序耦合度更低...
    Java__JJ阅读 441评论 0 0
  • 1、 Java语言有哪些特点 (1)简单易学、有丰富的类库 (2)面向对象(Java最重要的特性,让程序耦合度更低...
    cuixiaoyan阅读 317评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,590评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,620评论 0 11