in

理解Java中的抽象,附带示例

如果你能掌握一些简单的概念,就很容易理解java中的抽象。在编程中,管理程序的复杂性非常重要,通常,你会通过抽象来实现这一目的。

抽象是面向对象编程的基本概念之一,所以让我们深入学习一下。

java中的抽象是什么?

在基本层面上,抽象是隐藏程序的实现细节,以便你可以专注于其关键功能。

大多数情况下,抽象只是将现实世界的实体建模为适合你的程序的简化版本。然而,为了实现这种简化,非关键细节被忽略,最重要的细节必须成为焦点。

抽象的一个基本概念是封装的思想,即我们定义每个程序部分需要了解的清晰边界。这使得程序更加适应性强,因为在修改依赖于其他系统的系统时,你无需担心底层细节。

封装通常通过类来实现。根据方法和字段的访问修饰符,其他类只知道它们需要了解的内容,简化了它们之间的交互。

然而,在java中有两种其他方法可以促进抽象:抽象类和接口。

在java中实现抽象

abstractanimal是一个抽象类,它定义了一个没有提供实现的sound()方法。

©jingzhengli.com

抽象类

如果你阅读了我们关于java中类的文章,你就会知道抽象类是如何模拟现实世界实体的一个很好的例子。它们充当其他类的蓝图。

因此,它们本身不能被实例化。抽象类为它们的子类定义了公共行为。因此,子类可以根据需要实现属性。

让我们来看一个快速的例子。下面是一个我们可以为形状创建抽象类的方式:

abstract class shape {
    protected string color;

    public shape(string color) {
        this.color = color;
    }

    public abstract double calculatearea();

    public void display() {
        system.out.println("this is a " + color + " shape.");
    }
}

正如你在这里看到的,shape类定义了关于形状的一些通用细节,但没有进一步展开。

任何形状都可以有一个颜色,所以这里包含了该字段。此外,给定的形状有一种计算其面积的方法,但这将根据其外观而有很大差异。

因此,我们可以声明一个名为calculatearea的方法,而不实际说明它的作用,留给子类来实现。通过将其放在这里,所有的子类都需要实现这个方法。

class rectangle extends shape {
    private double length;
    private double width;

    public rectangle(string color, double length, double width) {
        super(color);
        this.length = length;
        this.width = width;
    }

    @override
    public double calculatearea() {
        return length * width;
    }
}

像往常一样,我们可以使用extendsrectangle作为shape的子类。定义了两个新的字段:lengthwidth。然后,我们使用这些字段重写calculatearea方法,提供了第一个实际的功能实现。现在可以像使用任何其他类一样实例化和使用rectangle类。

接口

接口类似于抽象类,但有一些关键区别。在抽象类的例子中,我们包含了一个具有主体的display方法,但在接口中不能这样做。接口中的方法永远不包括实现。

此外,一个类只能继承自另一个类,但可以继承自许多接口。最后,虽然抽象类可以有构造函数,但接口不可以。

下面是一个模拟动物的接口示例:

interface animal {
    void eat();
    void sleep();
}

可以看到,接口非常简单。通过包含一个eatsleep方法,我们要求实现此接口的任何类都必须实现这些方法。

下面是使用该接口创建一个dog类的示例:

class dog implements animal {
    @override
    public void eat() {
        system.out.println("狗在吃东西。");
    }

    @override
    public void sleep() {
        system.out.println("狗在睡觉。");
    }
}

使用implements关键字告诉java正在继承一个接口,而不是使用extends。根据接口的要求,我们实现了eatsleep方法,使它们适用于狗。

java中的抽象:总结

在java中编写大型程序时,抽象变得越来越重要,以维护良好的结构和可维护性。由于java是一种面向对象的语言,这些概念在许多不同的情况下都适用。

在java中使用抽象的方法还有很多,所以要继续学习!现在,让我们查看一些常见问题。

本文顶部的图片来自©tippapatt/shutterstock.com。

Written by 小竞 (编辑)

他们称呼我为小竞, 做作为河小马的助理有5年时间了,作为jingzhengli.com的编辑,我关注每天的科技新闻,帮你归纳一些现有科技以及AI产品来提升你的生产力,拥抱AI,让科技和AI为我们服务!