首页 > 其他分享 >抽象类和接口

抽象类和接口

时间:2023-09-30 15:24:11浏览次数:33  
标签:实现 void 接口 抽象类 方法 public

1. 引言

接口和抽象类是面向对象编程中的两个概念,用于实现代码的抽象和封装。

2. 抽象类

2.1 定义

抽象类(Abstract Class)是用于实现部分行为的类,它不能被实例化。抽象类可以包含普通方法、抽象方法(只有方法签名,没有具体实现)和属性,但抽象类中的抽象方法必须在子类中被实现。抽象类可以作为其他类的基类,其他类可以通过继承抽象类获得其属性和方法。在Java中,抽象类通过abstract关键字来定义。

2.2 抽象方法

抽象方法是一种特殊的方法,它没有方法的具体实现,即没有方法体,定义该方法时要用abstract关键字来修饰,该方法必须在抽象类中。

public abstract void run();

2.3 抽象类的特性

  • 使用abstract关键字来修饰抽象类。
  • 抽象类不能被实例化,即不能用抽象类去创建对象。
  • 抽象类中可以有普通类中所包含的成员变量,成员方法和构造方法。
  • 抽象类相比于普通类,抽象类中有抽象方法。
  • 抽象类的方法不能被private修饰的,不然违背重写原则。
  • 抽象类中有构造方法,为了方便子类能够调用,来初始化抽象类当中的成员。
  • 类只能通过extends关键字去继承抽象类。

2.4 抽象类的使用

  • Animals抽象类
public abstract class Animals {
    int leg; //腿

    public Animals() {
    }

    public Animals(int leg) {
        this.leg = leg;
    }

    public abstract void run();
}
  • Dog类继承Animals抽象类
public class Dog extends Animals{
    public Dog() {
        super(4);
    }
    @Override
    public void run() {
        System.out.println("狗在跑");
    }
}
  • Duck类继承Animals抽象类
public class Duck extends Animals{
    public Duck(){
        super(2);
    }
    @Override
    public void run() {
        System.out.println("鸭子在跑");
    }
}
  • 测试类:
public class TestAnimals {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.run();
        System.out.println("狗的腿有" + dog.leg + "条");

        Duck duck = new Duck();
        duck.run();
        System.out.println("鸭子的腿有" + duck.leg + "条");
    }
}

测试结果如下:

3. 接口

3.1 定义

接口(Interface)是一种抽象类型,它定义了一组方法的签名,但没有具体的实现。接口描述了一个类或者对象应该具备的行为,实现了接口的类必须实现接口中定义的所有方法。接口提供了一种规范,确保了代码的一致性和层次结构的灵活性。通俗来讲,接口就是一个标准,实现接口的类都得按照这个标准来定义。在Java中,接口通过interface关键字来定义。

3.2 接口存在的意义

类的父类只能有一个,继承只能是单继承,可以使用接口让我们实现多继承的逻辑。

3.3 接口的特性

  • 使用interface关键字来修饰接口。
  • 接口是特殊的抽象类。
  • 接口中的方法不能不能有具体的实现。
  • 接口中的方法可以是抽象的,静态的,默认的。在接口中抽象方法默认是 public abstract修饰的。在接口中变量默认是 public static final修饰的,实现它的类重写接口中的方法必须由public修饰。
  • 接口不能被实例化,即接口不能有构造方法。
  • 使用implements关键字来实现接口,接口里面的抽象方法必须要重写,默认方法可以重写也可以不重写,静态方法不能被重写。
  • 多个类可以实现一个接口。一个类可以实现多个接口,但只能继承一个类。
  • 类实现接口的时候,必须要实现接口里面的所有方法。否则,该类要定义为抽象类。

3.4 接口的使用

  • ICharger接口:开始充电和停止充电两个方法
public interface ICharger {
    void startCharge();
    void stopCharge();
}
  • Huawei类:实现ICharger接口
public class Huawei implements ICharger{
    @Override
    public void startCharge() {
        System.out.println("华为手机开始充电");
    }

    @Override
    public void stopCharge() {
        System.out.println("华为手机停止充电");
    }
}
  • Honor类:实现ICharger接口
public class Honor implements ICharger{
    @Override
    public void startCharge() {
        System.out.println("荣耀手机开始充电");
    }

    @Override
    public void stopCharge() {
        System.out.println("荣耀手机停止充电");
    }
}
  • 测试类:
public class TestCharger {
    public static void main(String[] args) {
        Huawei huawei = new Huawei();
        huawei.startCharge();
        huawei.stopCharge();

        Honor honor = new Honor();
        honor.startCharge();
        honor.stopCharge();
    }
}

测试结果如下:

4. 区别和联系

4.1 区别

  • 抽象类中可以含有普通方法和成员变量,接口中不能含有普通方法,子类必须重写所有抽象方法。
  • 抽象类用extends关键字继承,接口用implements关键字实现。
  • 一个抽象类可以实现多个接口,接口不能继承抽象类,接口可以使用extends关键字继承多个父类接口。
  • 一个类只能继承一个抽象类,一个类可以实现多个接口。
  • 接口适用于描述类之间的公共行为和功能,它提供了规范和约束,实现接口能够在不同的类之间实现代码的复用和组合。抽象类适用于描述类之间的共同特征和行为,它提供了一些通用的方法和属性,子类可以通过继承和重写来实现具体的功能。

4.2 联系

抽象类和接口中都可以由抽象方法,抽象方法是没有方法体的,这就需要我们去继承抽象类或者实现接口时来重写这些方法。

5.  总结

  • 抽象类中不一定有抽象方法,,但有抽象方法的类一定是抽象类。
  • 有了接口之后,类的使用者就不用关注具体类型,而只关注某个类是否具备某种能力。
  • 接口和抽象类都是面向对象编程中的重要概念,用于实现代码的抽象和封装,提高代码的可维护性和可扩展性。选择使用接口还是抽象类,取决于具体的需求和设计考虑。

 

标签:实现,void,接口,抽象类,方法,public
From: https://www.cnblogs.com/one-xiaoqiang/p/17737849.html

相关文章

  • API商品数据接口调用
    一、API商品数据接口概述API商品数据接口是一种通用的数据交互方式,它允许不同系统之间进行数据传输和交互。API商品数据接口可以使用各种不同的协议和标准来实现,例如RESTfulAPI、SOAP、XML-RPC等。其中RESTfulAPI是最常用的一种,它基于HTTP协议和JSON格式进行数据传输,具有简单易用......
  • 企微消息接口
    需求背景:希望将业务系统收到的消息推送给企微中的某个成员。大致流程:1)企微后台注册self-built应用,https://work.weixin.qq.com/进入App配置页,可以得到AgentID、Secret。在最下方可以配置TrustedIP。需要注意的是,配置TrustedIP前要配置DomainServerUrl。我的例子是在腾讯云......
  • 软件测试:功能测试-接口测试-自动化测试-性能测试-验收测试
    软件测试的主要流程一、测试主要的四个阶段1.测试计划设计阶段:产品立项之后,进行需求分析,需求评审,业务需求评级,绘制业务流程图。确定测试负责人,开始制定测试计划;2.测试准备阶段:各成员编写测试用例、先小组内评审、后会议评审,测试样机和配件,测试工具。3.测试执行阶段:......
  • 软件测试:功能测试-接口测试-自动化测试-性能测试-验收测试
    软件测试的主要流程一、测试主要的四个阶段1.测试计划设计阶段:产品立项之后,进行需求分析,需求评审,业务需求评级,绘制业务流程图。确定测试负责人,开始制定测试计划;2.测试准备阶段:各成员编写测试用例、先小组内评审、后会议评审,测试样机和配件,测试工具。3.测试执行阶段:......
  • 百度面试题:为什么使用接口而不是直接使用具体类?
    大家好,我是小米!今天,我要和大家聊聊一个在Java编程中非常重要的话题:“百度面试题:为什么要使用接口而不是直接使用具体类?”这个问题在很多Java面试中都会被问到,因为它涉及到了面向对象编程的核心思想和Java语言的特性。在开始之前,让我们先来了解一下什么是接口(Interface)和具体......
  • 谈一谈接口测试
    接口测试为什么重要?我相信你一定听说过这样一句话:“测试要尽早介入,测试进行得越早,软件开发的成本就越低,就越能更好地保证软件质量。”但是如何尽早地进入测试,作为软件测试的你,是不是也没办法说得清楚呢?其实上面那句话中的“测试”,所指的并不是测试这个人,而是指包含了单元测试、......
  • esxi上使用esxcli命令设置:虚拟交换机、端口组、vlan、物理接口
    创建虚拟交换机esxclinetworkvswitchstandardadd--vswitch-name=vSwitch2创建端口组esxclinetworkvswitchstandardportgroupadd--portgroup-name=VLAN3999--vswitch-name=vSwitch2设置端口组vlan号esxclinetworkvswitchstandardportgroupset-pVLAN3999--vlan-......
  • 接口
    1、接口不能创建对象,接口是用来被类实现(implements)的,实现接口的类称为实现类。一个类可以实现多个接口,实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类代码:D:\JAVA代码\javasepromax\opp-two\src\d5_interface2、接口的好处一个类可以......
  • 有哪些可以替代postman的接口测试软件?
    作者:IT华妹陀链接:https://www.zhihu.com/question/525827377/answer/2884144067来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。个人认为这几个工具都可以参考下!1.Fiddler:Fiddler是一款功能强大的接口测试软件,它可以帮助用户抓取、修改和重放......
  • Fireboom on Sealos:半小时搞定一个月的接口工作
    后端日常开发工作中有88%的接口都是CURD,占用了超过6成开发时间。这些工作枯燥乏味,且价值低下,不仅荒废了时间,还无法获得任何成就感。而Fireboom可在2分钟内,完成传统模式下2天才能完成的接口,让后端开发者不再搬砖。......