首页 > 其他分享 >2.3. 接口与抽象类

2.3. 接口与抽象类

时间:2023-06-07 09:12:06浏览次数:38  
标签:实现 接口 radius 2.3 抽象类 方法 class

接口和抽象类是 Java 中两种实现抽象和多态的方法。它们之间有一些区别,但也有一些相似之处。这一节我们将通过详细的例子来更深入地了解接口和抽象类。

2.3.1. 接口

接口可以定义一组方法签名,但不能包含方法的实现。一个类可以实现多个接口,实现接口的类必须实现接口中定义的所有方法。

定义接口:

interface InterfaceName {
    ReturnType methodName(Parameters);
}

实现接口:

class ClassName implements InterfaceName {
    // 实现接口中的所有方法
}

示例1:接口

interface Drawable {
    void draw();
}

class Circle implements Drawable {
    double radius;

    @Override
    public void draw() {
        System.out.println("Drawing a circle with radius " + radius);
    }
}

class Square implements Drawable {
    double sideLength;

    @Override
    public void draw() {
        System.out.println("Drawing a square with side length " + sideLength);
    }
}

class Main {
    public static void main(String[] args) {
        Circle circle = new Circle();
        circle.radius = 5;
        circle.draw(); // 实现接口的方法

        Square square = new Square();
        square.sideLength = 4;
        square.draw(); // 实现接口的方法
    }
}

接口还可以具有默认方法和静态方法,这些方法可以包含实现。

interface InterfaceName {
    default ReturnType defaultMethodName(Parameters) {
        // 默认方法的实现
    }

    static ReturnType staticMethodName(Parameters) {
        // 静态方法的实现
    }
}

2.3.2. 抽象类

抽象类可以包含抽象方法(没有实现的方法)和具体方法。子类必须实现抽象类中的所有抽象方法。一个类只能继承一个抽象类。

定义抽象类:

abstract class AbstractClassName {
    abstract ReturnType methodName(Parameters);

    ReturnType methodName(Parameters) {
        // 具体方法的实现
    }
}

继承抽象类:

class ClassName extends AbstractClassName {
    // 实现抽象类中的所有抽象方法
}

示例2:抽象类

abstract class Shape {
    abstract double getArea();

    void printArea() {
        System.out.println("The area is " + getArea());
    }
}

class Circle extends Shape {
    double radius;

    @Override
    double getArea() {
        return Math.PI * radius * radius;
    }
}

class Square extends Shape {
    double sideLength;

    @Override
    double getArea() {
        return sideLength * sideLength;
    }
}

class Main {
    public static void main(String[] args) {
        Circle circle = new Circle();
        circle.radius = 5;
        circle.printArea(); // 继承自抽象类的具体方法

        Square square = new Square();
        square.sideLength = 4;
        square.printArea(); // 继承自抽象类的具体方法
    }
}

2.3.3. 接口与抽象类的区别

  1. 一个类可以实现多个接口,但只能继承一个抽象类。
  2. 接口中的方法默认是 public,不能有其他访问修饰符。抽象类中的方法可以有不同的访问修饰符。
  3. 接口不能包含实例变量(成员变量),只能声明静态常量。抽象类可以包含实例变量。
  4. 接口支持默认方法和静态方法,抽象类不支持默认方法。

2.3.4. 何时使用接口和抽象类?

  • 当你想要定义一组相关对象应该实现的方法,但不关心具体的实现时,使用接口。
  • 当你想要为一组相关对象提供共享的实现和行为时,使用抽象类。
  • 如果需要实现多个不同的行为组合,使用接口。因为 Java 不支持多继承,所以不能继承多个抽象类,但可以实现多个接口。

2.3.5. 小结

通过本节的学习,我们了解了接口和抽象类的概念以及它们之间的区别。接口和抽象类都可以实现抽象和多态,选择使用哪个取决于具体的需求和设计。

我们学习了如何定义接口和抽象类,如何使用它们来实现多态,并通过具体的例子加深了对这两个概念的理解。

在实际开发中,根据具体的应用场景和需求,合理地使用接口和抽象类,可以帮助我们设计出更加灵活、可扩展和易于维护的代码。

file

file

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

标签:实现,接口,radius,2.3,抽象类,方法,class
From: https://www.cnblogs.com/yaoqian/p/17462304.html

相关文章

  • Java 深入学习(3) —— 抽象类(Abstract Class) 与 接口(Interface)的区别
    抽象类(AbstractClass)Java提供一个叫抽象方法的机制,这种方法是不完整的,仅有声明而没有方法体。abstractvoidf();包含抽象方法的类叫做抽象类。如果一个类包含一个或者多个抽象方法,则该类必须被限定为抽象的。如果从一个抽象类继承,并想创建该新类的对象,就必须为基类中的所有抽......
  • Jmeter-依赖登录的接口测试
    JMETER接口测试问题解决二之后续接口请求依赖登录接口的操作-知识在于点滴的积累-博客园(cnblogs.com)问题现象:必须登录才能测试其他接口解决办法:    用到了http授权管理器和httpcookie管理器。注意:  要先判断当前的登录的token是在header中的Authorizat......
  • Jmeter-接口请求参数写入数据库后显示问号"???"
    现象:  接口请求参数写入数据库后显示问号"???" 数据库:  解决:jmeter默认使用GBK编码启动,需要自己更改为UTF-8。添加编码后如图     ......
  • Jmeter-依赖上一个接口的响应数据
    问题:  下一个接口的入参需要依赖上一个接口的响应.如: 修改客户请求需要依赖添加客户请求响应中的id 1. 在上一个接口的请求中添加后置处理器:2. 将响应中的出参设置为变量 3. 在下一个接口的请求中使用变量  4. 请求成功  ......
  • Java抽象类总结
        final与abstract互斥final目的是绝育,abstract目的是让子类继承并重写......
  • Laravel Api接口数据进行加解密
    Laravel利用中间件处理API接口数据加解密;在某些时候,为了接口数据的安全和保密性,需要对来回的数据进行加密处理。如果是Laravel框架,中间件绝对是个好东西。Laravel中间件包含一个完整的工作流,即请求前中间件(request)和请求后中间件(response)。在我们这次的场景中,刚好很好的用到了......
  • API接口对电商平台的实质性帮助有哪些?以及api接口调用的的方式|根据关键词取商品列表
    API接口提供了电商平台之间数据和功能的交互方式,可以为电商平台带来以下几方面的实质性帮助:1. 增加平台数据实时性和准确性:通过API接口实现两个电商平台数据的实时同步,保证了平台商品信息、订单信息等数据的实时性和准确性。2. 提升平台的扩展性和可拓展性:通过API接口,第三方开......
  • 接口测试|postman发送POST请求
    Postman发送POST请求postman发送POST请求示例:微信公众平台创建用户标签接口,业务操作如下:1、打开微信公众平台,微信扫码登录:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login2、打开微信开放文档,找到用户管理-用户标签管理的接口信息:https://developers.weixi......
  • 修改ip接口的跃点数
    title:修改网络配置的InterfaceMetriccategories:-OS-Windows-批处理使用脚本修改网卡跃点数InterfaceMetric使用到的接口Get-NetIPInterfaceSet-NetIPInterfaceGet-NetAdapter需求描述需要修改当前跃点数为1的ip接口,修改其跃点数为90解决方案......
  • 如何通过抖音订单API接口获取订单详情
    要通过抖音订单API接口获取订单详情,您需要进行以下步骤:1.获取AccessToken:使用APPID和APPSecret调用获取AccessTokenAPI接口来获取您的AccessToken。2.获取订单列表:使用订单查询API接口传递AccessToken和其他查询参数来查询订单列表并获取订单ID。3.获取订单详情:使用订单......