java 抽象类和接口
Published on 2022-11-17 23:03 in 暂未分类 with 林动

java 抽象类和接口

    https://www.cnblogs.com/dolphin0520/p/3811437.html

    抽象类

    抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:

    abstract void fun();
    

    抽象类:

    [public] abstract class ClassName {
        abstract void fun();
    }
    

    如果一个类含有抽象方法,则称这个类为抽象类
    因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
    和普通类一样,同样可以拥有成员变量和普通的成员方法

    抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
    如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

    接口

    [public] interface InterfaceName {
     
    }
    

    接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量

    而方法会被隐式地指定为public abstract方法且只能是public abstract方法

    并且接口中所有的方法不能有具体的实现

    接口中的方法必须都是抽象方法。


    从 Java 8 开始,接口也可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。在 Java 8 之前,如果一个接口想要添加新的方法,那么要修改所有实现了该接口的类,让它们都实现新增的方法。

    接口的成员(字段 + 方法)默认都是 public 的,并且不允许定义为 private 或者 protected。从 Java 9 开始,允许将方法定义为 private,这样就能定义某些复用的代码又不会把方法暴露出去。


    设计层面上看,抽象类提供了一种 IS-A 关系,需要满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。
    从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
    接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
    接口的成员只能是 public 的,而抽象类的成员可以有多种访问权限。

    posted @   林动  阅读(24)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 25岁的心里话
    · 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
    · 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
    · 零经验选手,Compose 一天开发一款小游戏!
    · 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
    点击右上角即可分享
    微信分享提示