前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java基础语法-抽象类(一)

java基础语法-抽象类(一)

原创
作者头像
玖叁叁
发布2023-05-07 13:17:31
1530
发布2023-05-07 13:17:31
举报
文章被收录于专栏:玖叁叁

定义和特性

抽象类是一种抽象的概念,它不能被直接实例化。抽象类通常用来定义抽象方法,这些抽象方法没有方法体,也就是说它们没有具体的实现。抽象方法的定义方式是在方法声明中使用关键字“abstract”。

一个类只要有一个或多个抽象方法,就必须被定义为抽象类。另外,抽象类可以包含具体的方法,也可以包含成员变量。但是,不能使用“final”修饰符来定义抽象类,因为“final”表示不可修改,而抽象类是不完整的,需要在子类中实现。

与接口不同的是,抽象类可以有构造函数,并且可以有成员变量。另外,子类继承抽象类时,必须实现其抽象方法,或者将自己也定义为抽象类。

使用抽象类的好处是,它可以提供类的继承机制,允许程序员定义出一个抽象类作为其他类的基类。同时,抽象类还可以通过定义抽象方法来规范子类的行为,提高代码的可读性和可维护性。

用法

下面是一个使用抽象类的例子。假设我们有一个形状类Shape,其中包含一个计算面积的抽象方法area()。我们可以定义Shape类如下:

代码语言:javascript
复制
public abstract class Shape {
    protected double area;

    public abstract double area();
}

在这个例子中,Shape类是一个抽象类,其中包含了一个抽象方法area()。这个方法没有方法体,所以必须在子类中实现。

现在我们可以定义具体的形状,如圆形和矩形。我们可以创建一个圆形类Circle和一个矩形类Rectangle,它们都继承自Shape类,并实现了area()方法。下面是具体实现:

代码语言:javascript
复制
public class Circle extends Shape {
    private double radius;

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

    public double area() {
        area = Math.PI * radius * radius;
        return area;
    }
}

public class Rectangle extends Shape {
    private double width;
    private double height;

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

    public double area() {
        area = width * height;
        return area;
    }
}

在这个例子中,我们使用了继承和抽象方法的特性。Circle和Rectangle类都继承自Shape类,因此它们都必须实现area()方法。

我们可以创建对象的实例,并调用其area()方法来计算面积。下面是一个使用这些类的示例:

代码语言:javascript
复制
public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle(5.0);
        Shape rectangle = new Rectangle(4.0, 6.0);

        System.out.println("Circle area: " + circle.area());
        System.out.println("Rectangle area: " + rectangle.area());
    }
}

在这个示例中,我们首先创建了Circle和Rectangle的实例,并将它们赋值给Shape类型的变量。这是因为Shape类是抽象类,不能直接实例化。然后,我们调用它们的area()方法来计算面积,并输出结果。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义和特性
  • 用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档