java中抽象类和抽象方法
时间: 2023-09-13 18:08:58 浏览: 113
java抽象类和接口
Java中的抽象类和抽象方法是面向对象编程的重要概念之一。抽象类是一个不能被实例化的类,它用于定义一组相关的具体子类的共同特征和行为。抽象方法是在抽象类中声明但没有具体实现的方法。
抽象类通过关键字"abstract"来声明,可以包含普通的成员变量、普通的成员方法和抽象方法。抽象方法使用"abstract"关键字进行声明,并且不包含具体的实现。抽象方法必须在具体的子类中被重写实现。
抽象类的主要作用是为了模板化和规范化一组相关的子类。它可以提供一些通用的方法和属性,同时规定了子类必须实现的抽象方法,从而强制子类保持一定的一致性。
下面是一个简单的例子来说明抽象类和抽象方法的使用:
```java
abstract class Shape {
protected String color;
public Shape(String color) {
this.color = color;
}
public abstract double getArea();
public void display() {
System.out.println("This is a shape with color: " + color);
}
}
class Circle extends Shape {
private double radius;
public Circle(String color, double radius) {
super(color);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(String color, double width, double height) {
super(color);
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
}
public class Main {
public static void main(String[] args) {
Circle circle = new Circle("Red", 5.0);
circle.display();
System.out.println("Area of circle: " + circle.getArea());
Rectangle rectangle = new Rectangle("Blue", 3.0, 4.0);
rectangle.display();
System.out.println("Area of rectangle: " + rectangle.getArea());
}
}
```
在这个例子中,抽象类`Shape`定义了一个抽象方法`getArea()`,所有的具体子类必须实现该方法。子类`Circle`和`Rectangle`继承自抽象类`Shape`,分别实现了自己的`getArea()`方法。在`main()`方法中,我们创建了一个圆和一个矩形对象,并调用它们的`display()`和`getArea()`方法来展示抽象类和抽象方法的使用。
需要注意的是,由于抽象类不能被实例化,所以我们不能直接创建抽象类的对象。但是我们可以通过具体的子类来创建对象,并调用抽象类中的方法。
阅读全文