• 【JavaSE】抽象类与接口


    抽象类的概念

    什么是抽象类呢?我们先来看一个例子:一个父类是动物类,两个子类一个狗狗类,一个猫猫类。
    在这里插入图片描述
    Animal中有一个dark()方法,因为每个动物的叫的声音不同,而Animal不是一个具体的动物,所以这个方法并不能实现,这时我们就可以把这个dark()方法设计为抽象方法abstract method ,而含有抽象方法的类我们称为抽象类abstract class

    抽象类的语法

    使用abstract修饰的类我们称为抽象类,使用abstract修饰的是抽象方法
    在这里插入图片描述

    抽象类的特性

    1、抽象类不能实例化

    在这里插入图片描述
    抽象类是抽象的所以不能被实例化。

    2、抽象类中既可以有抽象方法,又可以有非抽象方法

    在这里插入图片描述

    3、当一个普通类继承了抽象类,那么必须重写抽象类中的抽象方法。

    在这里插入图片描述
    当我们重写后,报错消失
    在这里插入图片描述

    4、抽象类中的抽象方法不能使用,private final static,因为抽象方法一定要被重写,所以要满足重写的条件。

    在这里插入图片描述

    5、当一个子类没有重写父类的抽象方法时,可以把当前子类变为抽象类。

    6、抽象类中不一定有抽象方法,但又抽象方法的一定是抽象类。

    在这里插入图片描述

    7、抽象类中可以有构造方法,供子类创建对象时,初始化父类成员变量

    在这里插入图片描述

    接口的概念

    在日常生活中我们都见过接口,例如插座,例如usb接口,只要符合该接口的类型我们就可以使用该接口。在Java中也是,我们把接口可以看作对方法的抽象,只要类满足使用这个方法的条件,就可以实现接口,可以把接口看作多个类的公共规范,是一种引用数据类型

    接口的语法

    接口的定义形式跟类一样,只需要把class关键字换成interface关键字就可以了。
    在这里插入图片描述
    在这里插入图片描述

    接口的特性

    1、接口虽然时引用变量但不能被实例化

    在这里插入图片描述

    2、接口中成员默认为public static final方法默认为public abstract

    3、接口中的方法不能在接口中实现,必须在实现该接口的类里面重写后实现。但是JDK8开始,可以写一个default修饰的方法

    4、接口中不能有构造方法和代码块

    在这里插入图片描述

    5、接口被类实现时使用implements实现。

    在这里插入图片描述

    6、接口中可以有static修饰的方法

    多接口的实现

    我们先来看一个例子:
    在这里插入图片描述
    想要实现这个需求狗狗类和鱼类都很简单
    在这里插入图片描述
    但是鸭鸭类我们需要实现三个接口怎么办呢?这就是很典型的用法,一个类继承一个类实现多个接口
    在这里插入图片描述
    这就是Java中的不支持多继承,但是一个类可以实现多个接口

    接口的继承

    我们发现实现多个接口的时候很麻烦,需要把每个接口都实现一下,有没有简单的方法呢?我们说类和类之间是不支持多继承的,但是接口和接口之间可以多继承
    在这里插入图片描述
    在这里插入图片描述
    为什么要设计接口呢?这些方法我们也可以写在抽象类里面,通过继承实现,为什么还要有接口?其实接口的作用是让我们不关注类的概念,关注的是类是否具有某种能力
    在这里插入图片描述
    机器人不属于动物类但是依然可以实现IRunning这个接口,这就是接口的好处。

  • 相关阅读:
    前端部署项目
    如何实现MQTT协议数据传输?
    利用Promise封装AJAX
    TCP流量控制和拥塞控制
    SQL常见题型总结
    [附源码]JAVA毕业设计科研项目审批管理系统(系统+LW)
    Linux高级---configmap和secret
    【etcd】go etcd实战二:分布式锁
    40Java Runtime类
    NLP 自然语言处理实战
  • 原文地址:https://blog.csdn.net/weixin_64182409/article/details/127866800