zoukankan      html  css  js  c++  java
  • 抽象类和接口的区别[精华版]

    抽象类

    1. 如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象 的函数。。
    2. 如果一个类出现了抽象的函数,那么该类也必须 使用abstract修饰。
    3. 如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。
    4. 抽象类可以存在非抽象方法,也可以存在抽象的方法.
    5. 抽象类可以不存在抽象方法的。 
    6. 抽象类是不能创建对象的。
    疑问:为什么抽象类不能创建对象呢?
    因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象
    调用抽象方法是没有任何意义的。
    7. 抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。


    接口的特点:

    1. 类实现接口可以通过implements实现,实现接口的时候必须把接口中的所有方法实现,一个类可以实现多个接口。

    2. 接口中定义的所有的属性默认是public static final的,即静态常量既然是常量,那么定义的时候必须赋值。

    3. 接口中定义的方法不能有方法体。接口中定义的方法默认添加public abstract

    4. 有抽象函数的不一定是抽象类,也可以是接口类。

    5. 由于接口中的方法默认都是抽象的,所以不能被实例化。

    6. 对于接口而言,可以使用子类来实现接口中未被实现的功能函数。

    7. 如果实现类中要访问接口中的成员,不能使用super关键字。因为两者之间没有显示的继承关系,况且接口中的成员成员属性是静态的。可以使用接口名直接访问。

    8. 接口没有构造方法。

    9.当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否者需要实现接口中的所有方法。

    10.一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。

    11.一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。

    12.一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字前。



    区别:

    1.抽象类可以有构造方法,接口中不能有构造方法。
    2.抽象类中可以有普通成员变量,接口中没有普通成员变量
    3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
    4.抽象类中的抽象方法的访问类型可以是 public,protected,但接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
    5.抽象类中可以包含静态方法,接口中不能包含静态方法
    6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可
    以任意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类型。
    7.一个类可以实现多个接口,但只能继承一个抽象类。

  • 相关阅读:
    Python爬虫一
    Python爬虫二
    DRF框架中的演变View
    计算时间复杂度例题
    vue2.x webpack打包资源路径问题
    vs code运行c语言 控制台乱码 问题
    解决视频的声音和画面不同步问题
    c语言数据结构,静态链表,结构体数组
    swagger @ApiModel添加实体类不生效
    计算及校验海明码的3个举例
  • 原文地址:https://www.cnblogs.com/Jhaiha0/p/8465296.html
Copyright © 2011-2022 走看看