• java 的抽象(abstract)和接口(interface)的区别


    abstract抽象:

    抽象类:可以包含抽象方法的类

    目的:当某个功能想让不同的子类有不同的实现方法的时候就使用抽象类。

    特点:

    • 不能是final修饰,因为抽象类需要被继承
    • 子类继承必须重写抽象类中的所有抽象方法。如果子类不想重写或者只想重写部分,那么子类必须是抽象方法。
    • 抽象类不能直接naw对象。如果需要new,需要在new对象的时候使用匿名类来重写抽象类中的抽象方法。
    • 构造器不能为私有。子类实例化的时候会先调用父类的构造方法来实例化父类。

    抽象方法:在抽象类或者接口中没有方法体的方法

    特点:

    •  不能有static、final、private修饰。因为抽象方法必须被子类重写,而static方法、final方法、private方法都不会被子类继承。

    字段:和普通方法一样

    interface接口

    含义 :特殊的抽象类。是一种规范、标准、约束。

    特点:

    • 多继承。一个接口可以继承多个接口;一个类也可以实现多个接口。
    • 没有构造器。不能直接new对象,需要用匿名内部类。
    • 抽象字段默认为publlic static final;抽象方法默认为public abstract。
    • 接口中不能有普通方法。可以有default和static方法。
    • 可以有static方法。可以static方法中写具体实现。注意,使用了static,默认的public abstract修饰相当于没有。因为static和abstract是不可能共存的。

             abstract VS interface

    参数abstractinterface
    构造器
    范围修饰符除了private都可以

    只能为public

    继承单继承,和普通方法一样多继承,可以继承多个接口;一个类也可以实现多个接口。
    内置方法什么方法都可以有。只能有默认修饰public abstact方法和static方法。

    记住:abstract关键字和static、final、private不可能在方法中一起出现。

  • 相关阅读:
    用户画像系列——推荐相关核心标签(偏好类)
    [学习记录] SpringBoot 3. 自动配置
    光纤的用途及主要种类
    java基于Springboot+vue的房屋出租租房网站 elementui
    python安装geopy出现错误
    Pytorch tensor 数据类型快速转换三种方法
    2022 CMU15-445 Project0 Trie
    Angular 由一个bug说起之四:jsonEditor使用不当造成的bug
    Camera开发-图像的常用数储存格式
    CTF-PWN-[ZJCTF 2019]Login 栈位置的转换跟踪
  • 原文地址:https://blog.csdn.net/m0_52261367/article/details/126067873