关于抽象类和接口的总结
1、abstract可以修饰类和方法
abstract修饰的类称为抽象类,修饰的方法称为抽象方法,抽象方法只有声明部分,而没有具体的方法体
2、抽象类不能直接被实例化,即不能使用关键字new来创建类的对象
3、抽象类中可以没有abstract方法(为了强迫使用者必须通过继承来使用这个类);但是一旦类中包含了abstract方法,则这个“类”一定是abstract类,即有抽象方法的类一定是抽象类。
4、抽象类的子类必须实现抽象类中的所有抽象方法,否则子类也必须是抽象类。
5、抽象类中的抽象方法是多态的一种表现形式
6、抽象类与普通类区别:
抽象类前面由abstract修饰,而普通类没有。
抽象类不能创建对象,普通类可以创建对象。
抽象类中可以有抽象方法,普通类中一定没有抽象方法;
7、接口的访问控制符只有默认的和public。
8、 接口中的方法默认是public
接口中的属性默认是static、final
一个接口可以继承多个接口,一个类只能继承一个类
9、implements后可以实现多个接口
·接口实现类可以直接使用接口中的常量
·接口实现类所实现的多个接口中有常量名相同的常量,则在实现类中不能直接使用,必须使用类名来确定到底调用哪个接口中的常量
10、如果一个类实现了一个接口,但没有实现接口中的所有抽象方法,那么这个类必须是abstract类。
11、函数式接口判断:@FunctionalInterface!!!!!
Java8 java.lang.Runnable、java.util.Comparator<T>都是函数式接口;
jdk1.8以前@FunctionalInterface不起作用,且不能有静态方法和默认方法,只能定义常量、抽象类和内部类,而从jdk1.8之后,可以有静态方法(并且可以定义多个)和默认方法(也可以有多个)
12、函数式接口中可以定义多个常量、多个默认方法和多个静态方法,但只能定义一个抽象方法及多个java.lang.Object中的public方法
13、抽象类与接口的区别