当前位置 博文首页 > qq_41603622的博客:抽象类和接口的区别

    qq_41603622的博客:抽象类和接口的区别

    作者:[db:作者] 时间:2021-07-15 22:06

    抽象类

    定义:当一个方法被关键字abstract修饰被称为抽象方法,包含这个方法的类称为抽象类,用abstract关键字修饰

    抽象类和普通类的区别?

    • 抽象类不能被实例化,普通类可以实例化.
    • 抽象类和普通类都可以被继承,也可以发生向上转型、动态绑定.
    • 抽象类当中可以包含抽象方法和普通方法如果这个抽象类被普通类继承,必须重写抽象方法,不然编译会报错。如果是被抽象类继承,可以不用重写.
    • 抽象类不能被final修饰,抽象方法不能是private

    接口

    定义:接口是抽象类的更进一步, 在抽象类中可以包含非抽象方法和字段,而接口中包含的方法都是抽象方法,字段只能包含静态常量(static final).

    语法:使用关键字interface来修饰的

    特点:

    1.接口当中的方法默认是public abstract(都可以省略),不能有具体实现。但从jdk1.8开始,接口当中的方法可以有具体实现,但这个方法一定要用default修饰(当子类实现该接口之后,不需要重写该方法即可以调用该方法).
    2.接口中的属性默认是public static final(都可以省略),属性值不能被修改.
    3.接口出现是为了满足多继承的.

    抽象类和接口的区别?

    • 抽象类和接口都不能被实例化.
    • 接口中包含的方法都是抽象方法,包含的属性默认是静态常量.
    • 类和接口直接关系是implements,此时就要重写里面的所有的方法,因为都是抽象方法。类和类继承关系是用extends,接口和接口之间也是用extends.
    • 都可以发生向上转型,动态绑定.
    • 在Java中,类与类只能实现单继承,类与接口可以实现多个接口.

    核心区别: 抽象类中可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用(不必重写),而接口中不能包含普通方法,子类必须重写所有的抽象方法。

    cs