关于抽象类和接口的总结

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、抽象类与接口的区别

关于抽象类和接口的总结