java面试宝典(14)

119 阅读3分钟

学习java.java企业级实战项目

  1. 抽象类必须要有抽象方法吗?

不需要的,抽象类不一定非要有抽象方法。但从面向对象思想角度来分析,不建议这样做。

\

因为在设计的时候,会把逻辑上存在但实际不存在的类设置成抽象类,比如动物类,毕竟不能直接展示“动物”。

\

正因为不存在,所以里面的方法未必能实现,比如“奔跑”方法,所以此类方法需要设置成没方法体的抽象方法。

\

如果在抽象类里方法,全都有方法体,那么要么是抽象类设计不当,或者实现了未必能实现的方法,所以建议修改。

\

\

  1. 一般的类和抽象类有哪些区别?

一般的类不能包含没有方法体的抽象方法,而抽象类可以包含抽象方法。

抽象类不能直接用new来实例化,普通类可以直接实例化。

\

  1. 抽象类能使用 final 修饰吗?

首先说明,语法上不能,然后再进一步从面向对象思想角度来说明。

\

定义抽象类的本意是,让其它类继承的,从而进一步完善对象。如果定义为 final 该类就不能被继承,这样就会有矛盾,所以 final 不能修饰抽象类。

\

\

  1. 接口和抽象类有什么区别?

抽象类的子类要用 extends 来继承;而实现接口要用 implements 。

抽象类可以定义构造函数,而接口不能。

抽象类里可以定义 main 方法,但接口不能有 main 方法。

实现数量:类可以实现很多个接口;但是只能继承一个抽象类。

访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

上述是从语法上来归纳,然后建议大家再从面向对象思想的角度来说明

\

抽象类是对逻辑的归纳,比如动物类可以是抽象类,人类可以extends动物这个抽象类。

而接口是对功能的归纳,比如可以定义一个“提供数据库访问功能”的 接口,在其中封装若干操作数据库的方法。

\

  1. java 中 IO 流分为几种?

按功能来分可以分输入流(input)和输出流(output)。从类型来分可以是字节流和字符流。

\

\

  1. BIO、NIO、AIO 有什么区别?

BIO的英语全称是Block IO, 同步阻塞式 IO,就是平常经常使用的传统 IO,特点是简单方便,但并发处理能力低。

NIO,叫New IO, 同步非阻塞 IO,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO,Asynchronous IO, 是 NIO 的升级,实现了异步非堵塞 IO ,它是基于事件和回调机制。

\

  1. Files的常用方法都有哪些?

Files.exists():检测路径是否存在。

Files.createFile():创建文件。

Files.createDirectory():创建文件夹。

Files.delete():删除文件或文件夹。

Files.copy():复制文件。

Files.move():移动文件,即复制后删除。

Files.size():查看文件的个数。

Files.read():读取文件。

Files.write():写入文件。