java高频面试题-基础篇

         

1,什么是面向对象,面向对象有哪些特征?

面向对象,是把我们要做的事情当作一个整体,我们所关心的是这个整体,在整个整体上发生的是行为和属性,
而相对的面向对象,所关心的不是这个整体,而是具体的行为和属性,一步一步怎么实现的调用,哪些函数。

面向对象的基本特征是封装、继承、多态、抽象,这个是从实际代码逻辑中进行解释的。

封装就是,就代码封装在内部,构成一个整体功能,只提供某个方法给外面访问,在php中我们写的
public function ;protected function 等就是给该函数方法设置访问权限,
而function内部就是存放你这块代码的功能逻辑。

继承:继承是解决代码的复用,是类和类之间的关系,使得子类具备父类中得方法,比如有一个类方法,
他的功能是买菜,还有一个类,他的功能是洗菜,如果洗菜得类继承了买菜得类,那么原本这个类只有洗菜功能,
现在同样具备买菜功能。

多态:多态其实就是同一个方法,外面同一种请求,但是环境不同,该方法对外响应得结果是不同,
举个例子,在电脑桌面上粘贴复制和和在记事本中也是粘贴复制,这个行为都是一样得,
但是结果是不一样得,这个就是多态。

抽象:其实完成一个项目,只有面向对象是不可能完成得,我来讲一下面向对象关注点和面向过程关注点,
某个公司要在市场上运行,要这A区部署什么,B区在部署什么,C区部署什么,共同配合,他看的是整体,
大局发展观,这个就是面向对象,而A区具体执行什么,哪些过程,每一步环节怎么做,这个是面向过程,
这个就是一种抽象,面向对象不看过程,我只要看着要达到这个目标要有哪些部署行为和属性,整体而言的,
所以自然关注不到哪些与主题关系不大的东西。但并不是面向过程不中要,
面向对象可以想象成具体指导某件事的方法论,而面向过程就是执行具体的方法论。

2,常用的访问修饰符有哪些,区别?

修饰符          当前类     同包     子类     其他包
public              √          √          √           √
protected        √          √          √           ×
default            √          √          ×           ×
private            √          ×          ×           ×
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),
对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,
对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,
类的成员(包括内部类)的修饰符可以是以上四种。

3,什么是方法的重载和重写?

(1)、定义上的区别:
1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。
调用的时候根据函数的参数来区别不同的函数。
2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。
即函数名和参数都一样,只是函数的实现体不一样。

(2)、规则上的不同:
1、重载的规则:
①必须具有不同的参数列表。
②可以有不同的访问修饰符。
③可以抛出不同的异常。
2、重写方法的规则:
①参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
②返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
③访问修饰符的限制一定要大于被重写方法的访问修饰符。
④重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

(3)、类的关系上的区别:
重写是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。

4,数组和集合的相同点和不同点有哪些?

1、数组可以储存基本数据类型和对象,而集合中只能储存对象(可以以包装类形式存储基本数据类型)。
2、数组的长度是固定的,集合长度是可以改变的。
3、定义数组时必须指定数组元素类型,集合默认其中所有元素都是Object
4、无法直接获取数组实际存储的元素个数,length用来获取数组的长度,
但可以通过size()直接获取集合实际存储的元素个数
5、集合有多种实现方式和不同的适用场合,而不像数组仅采用分配连续的空间方式
6、集合以接口和类的形式存在,具有封装,继承和多态等类的特性,
通过简单的方法和属性调用即可实现各种复杂的操作,大大提高软件的开发效率。
7、数组和集合类同是容器。

                                      

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值