面向对象编程:深入理解抽象类和关键字

2023-12-13 17:18:27 浏览数 (2)

文章目录

      • 1. 关键字
        • 1.1 static
        • 1.2 final
        • 1.3 static final
      • 2. 抽象类
        • 2.1 抽象类的推导过程
        • 2.2 抽象类能否创建对象?
        • 2.3 抽象类的意义
        • 2.4 判断
      • 3. 案例:计算圆形和长方形的周长及面积

在Java编程中,我们经常会遇到一些特殊的关键字和概念,其中包括static、final以及抽象类等。本文将深入探讨这些关键字和概念的作用和使用方法,并通过一个实例展示抽象类的应用。

1. 关键字
1.1 static
  • static修饰成员变量:表示该成员变量属于类,不属于对象,所有对象共享一份。
  • static修饰成员方法:表示该方法属于类,不属于对象,通过类名直接调用。
  • 什么时候使用static:当所有对象共享一个属性或方法时,可以使用static修饰。
1.2 final
  • final修饰类:表示该类不能被继承。
  • final修饰方法:表示该方法不能被子类重写。
  • final修饰成员变量:表示该成员变量在初始化后不能再修改。
  • final修饰局部变量:表示该局部变量在初始化后不能再修改,使用前必须进行初始化。
1.3 static final
  • 修饰成员变量:表示该成员变量是一个常量,其值在初始化后不能再修改。
2. 抽象类
2.1 抽象类的推导过程
  • a.由于方法体没有意义,需要干掉方法体。
  • b.添加abstract关键字在方法上,使方法成为合法的抽象方法,方法体依然不完整。
  • c.当前类也不完整,需要添加abstract关键字在class前,使类变得合法,当前类依然不完整。
2.2 抽象类能否创建对象?
  • 抽象类不能直接创建对象,只能用于被继承。
2.3 抽象类的意义
  • 抽象类需要有子类继承,并且重写父类的抽象方法。
  • 子类继承抽象类,可以是普通类,也可以是抽象类。
2.4 判断
  • 有抽象方法的类一定是抽象类。
  • 抽象类中不一定有抽象方法,可以有普通方法。
3. 案例:计算圆形和长方形的周长及面积

现在,我们通过一个实例来应用抽象类的概念,计算圆形和长方形的周长和面积。

代码语言:javascript复制
abstract class Shape {
    abstract double perimeter();
    abstract double area();
}

class Circle extends Shape {
    double r;

    Circle(double r) {
        this.r = r;
    }

    @Override
    double perimeter() {
        return 2 * Math.PI * r;
    }

    @Override
    double area() {
        return Math.PI * r * r;
    }
}

class Rectangle extends Shape {
    double a;
    double b;

    Rectangle(double a, double b) {
        this.a = a;
        this.b = b;
    }

    @Override
    double perimeter() {
        return 2 * (a   b);
    }

    @Override
    double area() {
        return a * b;
    }
}

public class AbstractClassExample {
    public static void main(String[] args) {
        Shape circle = new Circle(5);
        Shape rectangle = new Rectangle(3, 4);

        System.out.println("圆形周长:"   circle.perimeter());
        System.out.println("圆形面积:"   circle.area());

        System.out.println("长方形周长:"   rectangle.perimeter());
        System.out.println("长方形面积:"   rectangle.area());
    }
}

通过上述实例,我们可以看到抽象类的实际应用。Shape类作为抽象类,包含了计算周长和面积的抽象方法,而Circle和Rectangle类分别继承了Shape类,并重写了父类的抽象方法。通过多态性,我们可以灵活地调用Shape类的子类,并计算出圆形和长方形的周长和面积。

通过本文的介绍,我们深入理解了Java中的抽象类和一些关键字的概念和用法。抽象类作为面向对象编程中的重要概念,可以帮助我们更好地封装和继承,并且通过多态性实现更灵活的代码编写。希望本文对您在学习和应用抽象类方面有所帮助。

有问题或建议的话,欢迎评论区留言交流!!!

0 人点赞