面试问题汇总
java中子类能不能继承父类构造方法?
结果有些和想象中的不一样吧。
原因如下:其实每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
所以父类中的构造方法是不能继承的,但是在实例化子类的时候会调用父类的构造方法
如何让一个java类不被继承?
当父类被修饰符private修饰时,或当final修饰的类时不能被子类继承,但是final用于修饰方法时,该方法能被继承
final表示最终的意思,它修饰的类是不能被继承的;final修饰的方法能被继承(Math类里就有),但是不能够被重写。其实关系并不复杂,你只需要记住这样一句话:final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。
Oracle trunc()函数和round函数的用法?
SELECT TRUNC(number,num_digits)FROM DUAL
说明:
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入
select trunc(123.458) from dual --123
select trunc(123.458,0) from dual --123
select trunc(123.458,1) from dual --123.4
select trunc(123.458,-1) from dual --120
select trunc(123.458,-4) from dual --0
select trunc(123.458,4) from dual --123.458
SELECT ROUND( number, [ decimal_places ] ) FROM DUAL
说明:
number : 将要处理的数值
decimal_places : 四舍五入,小数取几位,不填默认为0
select round(123.456) from dual; 结果: 123
select round(123.456, 0) from dual; 结果: 123
select round(123.456, 1) from dual; 结果: 123.5
select round(123.456, 2) from dual; 结果:123.46
select round(123.456, 3) from dual; 结果: 123.456
select round(-123.456, 2) from dual; 结果:-123.46
抽象类可以不包含抽象方法,但有抽象方法的类一定要声明为抽象类!!!
Java程序中的类名称必须与存放该类的文件名相同?
错,声明为public类型的类名必须与文件名相同,默认权限的可以不同
简单的做个关于抽象类和接口的总结吧:
- final 因为final修饰的方法不能被继承。
- static因为类.方法(),此方法没有方法体,没有意义。
- private 因为抽象方法是要被子类覆盖的,加上private子类就不知道这个方法了。