抽象类为什么不能创建对象?
首先我们要知道抽象类是什么:
抽象类是指在普通类的结构里增加抽象方法的组成部分。抽象方法是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。
抽象类无法直接进行实例化。因为当一个类实例化之后,就意味着这个对象可以调用类中的属性或者方法了,但在抽象方法里存在抽象方法,抽象方法没有方法体,没有方法体就无法进行调用。既然无法进行方法调用,就不能去产生实例化对象。
抽象类的使用:
1.抽象方法必须为public或者protected(如果为private,则无法被子类继承,而抽象方法就等着被继承呢,就没法实现这个方法了)。
2.抽象类不能直接实例化,要向上转型即父类引用指向子类对象
3.抽象类要有子类来继承
4.子类必须将抽象类中的方法都重写
所以:首先java不允许,会报错。如果你创建出来了抽象类的对象,调用的方法里没有方法体,也是没有意义的
SQL查询语句关键字的执行顺序
from-on-join-where-group by-having-select-distinct-union-order by
Statement和PreparedStatement的区别
首先看API中对这两个的解释
statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
preparedstatement:表示预编译的 SQL 语句的对象。 SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句
从这里可以得出:preparedstatement是预编译的,对于多次处理的效率要比statement高。如果只执行一次性的操作时,preparedstatement会比较复杂。
还有一点就是preparedstatement的安全性,它可以解决SQL注入的问题。
Sql注入: 通过sql代码的漏洞,进行攻击系统
而 preparedstatement进行预编译后再执行SQL,可以防止此问题发生。
掌握封装思想和面向对象思想