思考题解答
以下为一些面试可能会问到的问题
1.抽象类为什么不能创建对象
抽象类就是作为父类用来继承的,抽象类的抽象方法没有实现,就算创建了调用也没用,无法编译。
与具体的类比较:
- 抽象类不能直接实例化,并且对抽象类使用new运算符会导致编译时错误。(虽然一些变量和值在编译时的类型可以是抽象的,但是其值必须为null,或者含有对非抽象类的实例的引用)
- 允许抽象类包含抽象成员
- 抽象类不能被密封
与接口比较:
相同点:
不能实例化对象,包含未实现的方法声明、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅仅是方法包括其他成员)
不同点:
- 可以实现很多个接口,但只能继承一个抽象类(解决多重继承)
- 抽象类当中可以存在非抽象的方法,可接口不能(它里面的方法只是一个声明,必须用public来修饰没有具体实现的方法)
- 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量。
- 抽象类是对象的抽象,然而接口是一种行为规范。
- 接口只能做方法声明,抽象类中可以作方法声明,也可以作方法实现。
- 接口是设计的结果,抽象类是重构的结果
- 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别较高
- 抽象类主要用来抽象类别,接口主要用来抽象功能
2.SQL查询语句关键字的执行顺序
书写sql语句时各关键字的顺序:
select from where group by having order by执行顺序:
from where group by having select order byfrom:从哪张表检索数据
where:设置条件,过滤表中数据
group by:将上面过滤出的数据,进行分组
having:对上面已经分组的数据进行过滤的条件
select:指定查看结果集中的那个列或列的计算结果
order by:设置查看返回数据的方式
3.Statement和PreparedStatement的区别
1.Statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句,也就是说sql语句是静态的。
2.PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中。被封装的sql语句代表某一类操作,语句中可以包含动态参数“?”,在执行时可以为“?”动态设置参数值。
3.使用PrepareStatement对象执行sql时,sql被数据库进行解析和编译,然后被放到命令缓冲区,每当执行同一个PrepareStatement对象时,它就会被解析一次,但不会被再次编译。在缓冲区可以发现预编译的命令,并且可以重用。
PrepareStatement可以减少编译次数提高数据库性能。
本文地址:https://blog.csdn.net/qq_45879990/article/details/107322702
上一篇: 海啸杯部分题目write up
下一篇: vue查看大图插件