面试题精选
面试题
面试题精选:
1.方法重写与重载的区别
重载:
java中允许同一个类文件中出现多个方法名相同,但是参数列表不同的同名方法,这种现象称为重载
要求两个方法名称必须相同,但是参数列表不能相同(个数不同,参数类型不同,参数类型出现顺序)
目的,让方法在接收不同参数实现实现不同功能
重写:
发生在继承过程中,子类对父类方法实现细节进行重新定义
1.重写方法时,子类不能降低方法的访问权限,可以扩大访问权限
2.由private或者final修饰的方法都不能被重写
3.重写方法时,抛出异常可以是父类方法抛出异常的全集、子集、空集
4.重写的方法返回值,可以缩小返回值的范围,但是不能增加返回类型范围
2.throw 和 throws的区别
throws:
1.声明位置:方法名之后
public void test() throws NullPointerException{
}
2.作用:是处理异常的一种机制,通知开发人员当前方法运行时,【有可能】抛出的异常
3.携带数据:throws后面携带【异常类型】,一个throws后面可以携带多个异常类型
4.调用:当一个方法被throws修饰时,调用方法时必须考虑异常捕捉问题
throw:
1.声明位置:方法执行体
public void test(){
throw new RuntimeException();
}
2.作用:throw是一个命令,执行时抛出一个指定异常对象
3.携带数据:throw后面携带【异常对象】,一个throw一次只能携带一个异常对象
4.调用:当一个方法内部在throw命令时,在调用时可以不考虑异常捕捉问题
3.接口与抽象类的区别
接口:
1.是一种特殊文件,不可以有方法体,且接口的实现类必须重写接口中声明的方法
2.作用:
指定规则
降低耦合度
3.使用规则:
接口中属性,默认都是静态常量属性
接口中方法都是抽象,如果需要定义具体方法实现,此时方法需要使用default修饰
接口中方法访问权限不能是private
接口与接口之间可以实现多继承,但是接口之间不能互相实现
接口中不能存在构造方法
抽象类:
抽象类在实现接口时,可以不对接口中的方法进行重写,抽象类没有重写的方法,必须由抽象类的子类负责实现
1.抽象类由abstract修饰
2.抽象类的作用:降低接口实现类与接口之间实现难度
3.使用规则:
抽象类可以声明抽象方法,也可以生成具体方法
抽象类声明抽象方法必须由子类进行重写
抽象类实现接口时,不需要对接口方法进行重写
抽象类有构造方法,但是不能使用