【JAVA】《接口,抽象方法,抽象类 》之二 、抽象方法详解

一、接口

1.1、接口的概念
1.2、接口的作用:
1.3、接口应用:
1.4、接口实践:
详情参考【java】《接口,抽象方法,抽象类 》之一 、接口详解

二、抽象方法

2.1、抽象方法概念

接口中的方法通常都是抽象方法,但自从 Java 8 开始,接口也可以包含默认方法(Default Method)和静态方法(Static Method)。抽象方法是一种没有具体实现的方法,它只有方法签名而没有方法体,需要由实现类提供具体的实现。

2.2、抽象方法的特点:

  • 没有方法体:抽象方法只有方法声明,没有方法体。
  • 必须由子类实现:抽象方法必须由子类提供具体的实现,否则子类也必须声明为抽象类。
  • 用于定义行为规范:抽象方法通常用于定义一种行为规范,告诉子类应该具备的行为。

2.3、抽象方法的作用:

  • 定义接口规范:抽象方法定义了接口或抽象类应该具备的行为,提供了一种规范约束。
  • 实现多态:通过抽象方法,不同的子类可以提供自己特定的实现,从而实现多态。

2.4、抽象方法的应用:

  • 接口定义:接口中的方法通常都是抽象方法,用于定义接口规范。
  • 抽象类:抽象类中的方法可以是抽象方法,用于提供一种行为规范,而具体的实现交由子类实现。
  • 继承:子类继承抽象类或实现接口时,必须提供抽象方法的具体实现。

2.5、抽象方法的实践:

考虑以下的示例,定义了一个 Shape 接口,其中包含一个抽象方法 calculateArea(),用于计算图形的面积。具体的图形类(如圆、矩形)必须实现该方法来提供自己的面积计算逻辑:

// 定义接口
interface Shape {
    double calculateArea(); // 计算形状的面积
}

// 实现接口
class Circle implements Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

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

class Rectangle implements Shape {
    private double width;
    private double height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double calculateArea() {
        return width * height;
    }
}

// 使用接口
public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle(5);
        System.out.println("Circle area: " + circle.calculateArea());

        Shape rectangle = new Rectangle(4, 6);
        System.out.println("Rectangle area: " + rectangle.calculateArea());
    }
}

在这里插入图片描述

在上述示例中,Shape 接口定义了 calculateArea() 抽象方法,CircleRectangle 类分别实现了该方法,提供了自己的面积计算逻辑。这样,无论是圆还是矩形,都可以通过统一的方法来计算它们的面积。

2.6、使用抽象方法的注意事项

在使用抽象方法时,有几个注意事项需要考虑:

  • 抽象方法没有方法体 \color{green}{抽象方法没有方法体} 抽象方法没有方法体:抽象方法只有方法声明而没有方法体,因此在子类中必须提供具体的实现。
  • 子类必须实现抽象方法 \color{green}{子类必须实现抽象方法} 子类必须实现抽象方法:如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类
  • 抽象方法不能是私有的或静态的 \color{green}{抽象方法不能是私有的或静态的} 抽象方法不能是私有的或静态的:抽象方法不能是私有的(private)或静态的(static),因为它们必须被子类重写。
  • 抽象方法不能被 f i n a l 修饰 \color{green}{抽象方法不能被final修饰} 抽象方法不能被final修饰:抽象方法不能被 final 修饰,因为 final 修饰的方法不能被子类重写。
  • 抽象方法可以被覆盖为非抽象方法 \color{green}{抽象方法可以被覆盖为非抽象方法} 抽象方法可以被覆盖为非抽象方法:一个抽象类中的抽象方法可以被它的子类实现为非抽象方法。这使得抽象类可以逐步完善,逐步提供默认实现。
  • 抽象方法不能被覆盖为私有方法 \color{green}{抽象方法不能被覆盖为私有方法} 抽象方法不能被覆盖为私有方法:在 Java 9 之前,抽象方法不能被覆盖为私有方法,但可以被覆盖为默认方法或静态方法。
  • 抽象方法的可见性 \color{green}{抽象方法的可见性} 抽象方法的可见性:抽象方法的可见性必须比其所在类的可见性更低,例如,如果一个类是 public 的,那么其抽象方法必须至少是 public 的,而不能是 protected 或 private 的。
  • 接口默认方法 \color{green}{接口默认方法} 接口默认方法:Java 8 引入了接口默认方法(Default Method),它们为接口提供了具体的方法实现。实现类可以选择是否覆盖默认方法。
  • 静态方法不是抽象方法 \color{green}{静态方法不是抽象方法} 静态方法不是抽象方法:静态方法在接口中不是抽象方法,它们可以有方法体,并且不需要在实现类中被覆盖。

在编写代码时,应该根据具体的需求和设计原则来合理使用抽象方法,确保代码的清晰、可读和易于维护。

三、抽象类

如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,**那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类。**下面介绍一下抽象类。
3.1、抽象类的概念
3.2、抽象类的特点:
3.3、抽象类的作用:
3.4、抽象类的应用:
3.5、抽象类的注意事项:
详情参考【JAVA】《接口,抽象方法,抽象类 》之三 、抽象类详解

四、开发实践

4.1、定义接口:
4.2、实现抽象类:
4.3、创建具体实现类:
4.4、使用示例:
4.5、调用流程:
详情参考【JAVA】《接口,抽象方法,抽象类 》之四 、开发实践

订阅我的专栏,动动小手,点点关注,随学随更~

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值