接口
-
特殊的类文件
-
作用:1. 指定规则 2.降低耦合度
-
使用规则:
-
-
接口中属性默认都是静态常量属性(public static final)。
-
接口中方法都是抽象的==(public abstract),如果需要定义具体方法的实现,此时方法需要使用default==修饰。
-
接口中方法的访问权限不能是private。
-
接口与接口之间可以实现多继承,但是接口之间不能相互实现。
-
接口中不存在构造器,所以接口是不能实例化的。
-
抽象类
-
抽象类由abstract修饰。
-
作用:降低接口实现类与接口之间的实现难度。
实现类不一定需要用到接口中定义的所有方法,可以先创建一个抽象类先实现一部分方法,留下实现类需要的方法,实现类再继承抽象类,实现需要的方法。
-
使用规则:
-
- 抽象类可以声名抽象方法,也可以生成具体方法。
- 抽象类声名的抽象方法必须由子类进行重写。
- 抽象类实现接口时,可以不对接口方法进行重写。
- 抽象类中有构造方法,但是不能使用。
throws
- 声明位置:方法名之后。
- 作用:通知调用者该方法在运行时,==【有可能】==抛出的异常。
- 携带数据:throws后面携带==【异常类型】==,一个throws后面可以携带多个异常类型。
- 调用:当一个方法被throws修饰时,调用方法时必须考虑异常捕捉的问题。
throw
- 声名位置:方法的执行体中。
- 作用:抛出一个指定的异常对象。
- 携带数据:throw后面携带==【异常对象】==,一个throw一次只能携带一个异常对象。
- 调用:当一个方法内部存在throw命令时,如果抛出的异常对象是编译时异常, 则需要在方法申明时加上该异常的抛出 ,即需要加上throws语句 ,或者在方法体内try catch捕捉处理该异常,否则编译报错 。执行到 throw 语句则后面的语句块不再执行。
重载:
- 出现在同一个类中,方法名相同,但是参数列表不同(参数的个数,参数的类型,参数的顺序(参数类型不同,如果都是int类型,那么也不构成重载)。
- 访问限制符:无所谓。
- 返回值类型:无所谓。
- 抛出异常:无所谓。
- 目的:让方法在接收不同参数时,实现不同的功能。
重写:
- 发生在继承过程中,子类对父类方法的实现细节进行重新定义。
- 子类访问权限不能比父类方法的访问权限更低。
- 被private,final修饰的方法不能被重写。
- 子类方法抛出的异常可以是父类方法抛出异常的全集,子集,空集。
- 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的子类。