- 抽象类必须要有抽象方法吗?
不需要的,抽象类不一定非要有抽象方法。但从面向对象思想角度来分析,不建议这样做。
\
因为在设计的时候,会把逻辑上存在但实际不存在的类设置成抽象类,比如动物类,毕竟不能直接展示“动物”。
\
正因为不存在,所以里面的方法未必能实现,比如“奔跑”方法,所以此类方法需要设置成没方法体的抽象方法。
\
如果在抽象类里方法,全都有方法体,那么要么是抽象类设计不当,或者实现了未必能实现的方法,所以建议修改。
\
\
- 一般的类和抽象类有哪些区别?
一般的类不能包含没有方法体的抽象方法,而抽象类可以包含抽象方法。
抽象类不能直接用new来实例化,普通类可以直接实例化。
\
- 抽象类能使用 final 修饰吗?
首先说明,语法上不能,然后再进一步从面向对象思想角度来说明。
\
定义抽象类的本意是,让其它类继承的,从而进一步完善对象。如果定义为 final 该类就不能被继承,这样就会有矛盾,所以 final 不能修饰抽象类。
\
\
- 接口和抽象类有什么区别?
抽象类的子类要用 extends 来继承;而实现接口要用 implements 。
抽象类可以定义构造函数,而接口不能。
抽象类里可以定义 main 方法,但接口不能有 main 方法。
实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。
上述是从语法上来归纳,然后建议大家再从面向对象思想的角度来说明
\
抽象类是对逻辑的归纳,比如动物类可以是抽象类,人类可以extends动物这个抽象类。
而接口是对功能的归纳,比如可以定义一个“提供数据库访问功能”的 接口,在其中封装若干操作数据库的方法。
\
- java 中 IO 流分为几种?
按功能来分可以分输入流(input)和输出流(output)。从类型来分可以是字节流和字符流。
\
\
- BIO、NIO、AIO 有什么区别?
BIO的英语全称是Block IO, 同步阻塞式 IO,就是平常经常使用的传统 IO,特点是简单方便,但并发处理能力低。
NIO,叫New IO, 同步非阻塞 IO,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO,Asynchronous IO, 是 NIO 的升级,实现了异步非堵塞 IO ,它是基于事件和回调机制。
\
- Files的常用方法都有哪些?
Files.exists():检测路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除文件或文件夹。
Files.copy():复制文件。
Files.move():移动文件,即复制后删除。
Files.size():查看文件的个数。
Files.read():读取文件。
Files.write():写入文件。