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