抽象类与接口
-
abstract修饰符,修饰类,该类就是抽象类;修饰方法,该方法就是抽象方法;
格式:遵循普通格式,但修饰符必须有abstract;
-
抽象方法,只有方法的声明,没有方法的实现(方法体),依靠子类来实现,没有{},以;结尾;
-
子类继承抽象类,就必须要全部实现抽象类没有实现的抽象方法,否则该子类也必须是抽象类;
-
抽象类的使用注意点:
①抽象类单独存在没有任何价值,一般被设计成一个父类使用;
②抽象类如果不定义抽象方法,那么该方法就是让它的子类来使用的;
③一个方法如果没有方法体,那必须使用abstract关键字修饰;
-
abstract不可与private(私有的,不可继承)、final(最终的、没有子类)、static(静态的,类中默认执行,而抽象类必须子类继承执行,矛盾)
-
抽象类不能new,它是让子类继承的,只能依靠子类去实现:约束
-
抽象类可以具有类的所有特征(包括属性、方法、构造等),
-
抽象方法只能在抽象类或者接口中,抽象类中可有可无抽象方法、普通方法,但抽象类中一般都存在抽象方法。
接口
-
为了弥补java单继承的缺陷,通过接口进行多实现;接口是抽象方法的集合
- 普通类:只有具体实现;
- 抽象类:具体实现和规范(抽象方法)都有;
- 接口:只有规范,起约束作用; ①本质也是一种类; ②一般定义抽象方法,不能定义普通方法、成员变量; ③实现的关系本质上是一种继承关系; ④接口没有构造方法,它的实现类不能使用super关键字来调用接口中的信息 ⑤一个实现类可以同时实现多个接口类,一个接口类也可以同时继承多个接口
声明类的关键字是class,声明接口的关键字是interface
-
接口的实现:类名 implements 接口名{}
-
实现接口,必须将接口内的抽象方法全部重写,否则该类需定义为抽象类;
-
实现,将基于接口的类实例化;
-
一个类可以同时继承+实现,先继承后实现;类名 extends 父类 implements 接口;
-
-
当接口内部,有且仅有一个需要实现的方法,使用A a = ->{ 重写的方法};
-
接口的作用:
-
提高程序的重用性
-
提高程序的可扩展性
-
降低程序的耦合度
-
实现了多继承
-
增加安全性
-
-
接口与类相似点:
-
一个接口可以有多个方法,
-
接口文件保存在.java结尾 的文件中,文件名使用接口名。
-
接口的字节码文件保存在.class结尾的文件中。
-
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
-
-
接口与类的区别:
-
接口不能实例化对象
-
接口没有构造方法
-
接口所有的方法只能是抽象方法,必须public abstract修饰,(默认public abstract修饰,一般不再写) jdk1.8之后,内部可以有默认方法(显式的用default修饰,借用实现类的对象调用)、静态方法(static,借助 接口名.方法名 调用)
-
接口不能包含成员变量,默认都是静态常量(默认public static final修饰);
-
接口不是被继承,而是要被实现
-
接口不能实现接口,但接口支持多继承接口;接口 extends 接口1,接口2,·······{}
-
-
接口与抽象类的区别
-
抽象类中的方法可以有方法体,能实现方法的具体功能,但接口中的方法不行;
-
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的;
-
接口中不能含有静态代码块而抽象类是可以有静态代码块;
-
一个类只能继承一个抽象类,但可以实现多个接口;
-
浙公网安备 33010602011771号