《java编程语言 面经 思考题 整理》秋招 待更新

本文主要探讨Java面试中常见的问题,包括接口与抽象类的区别、接口为何能多实现、Java语言的安全性问题、方法的重载与覆盖的差异、以及Vector与ArrayList的选择。同时,还介绍了ArrayList实现的要素和happens-before原则在多线程内存可见性中的作用。
摘要由CSDN通过智能技术生成


   问题的答案参考了很多博客归纳整理,以及个人的思考,如果有其他见解欢迎留言讨论。

面试题1、你认为接口和抽象类有什么区别?

  首先,从语法上讲,

  • 抽象类中除了抽象方法,还可以有方法的实现,而接口比抽象类更加抽象,只能有抽象方法。
  • 抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。
  • 抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的,如果是常量的话是默认为public static final。接口中由于没有具体方法体,所以无法定义属性的set和get方法,所以它干脆把属性定义为常量,例如接口中interface geneElec{ int power = 220; void generate();} 其中power由于是在接口中,所以默认的修饰符是public static final。

  从java面向对象编程语言角度为什么要设计接口和抽象类两者?抽象类是对概念的归纳,接口是对功能的归纳,两者的侧重点不一样。任何的一个类当要扩展功能时,可以通过实现多个接口,而需要将现有的类的内容归为自己所有,则采用面向对象的四大基本特征之一,继承来实现(认现有的类作儿子)。 一个类可以实现多个接口,但只能继承一个父类。

面试题2、你认为为什么接口可以多实现,类只能单继承?

  从语法的角度上讲,
  Java接口是行为性的,是对功能的归纳,它只是定义了某个行为名称,具体的行为的实现是集成接口的类实现的。因此就算两个接口中定义了两个名称完全相同的方法,当某个类去集成这两个接口时,类中也只会有一个相应的方法,这个方法的具体实现是这个类来进行编写的,所以并不会出现结构混乱的情况。
  如果Java是可以多继承的,会存在多继承导致的的菱形继承问题。举个例子,在这里有个A类,我们又编写了两个类B类和C类,并且B类和C类分别继承了A类,并且对A类的同一个方法进行了覆盖。如果此时我们再次编写了一个D类,并且D类以多继承的方式同时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值