📅  最后修改于: 2023-12-03 15:31:56.689000             🧑  作者: Mango
在Java中,abstract是一个关键字。当用它修饰一个类、方法或属性时,就表示这个类、方法或属性具有抽象属性。
抽象属性意味着它们不是完整的,需要经过继承和重写才能得到完整的实现,也就是说,使用abstract关键字的类不能被实例化,只能作为父类被继承。同时,使用abstract关键字的方法必须被子类重写,而使用abstract关键字的属性必须被子类实现。
在Java中,抽象类是具有抽象方法的类。抽象类不能直接实例化,只能被子类继承。抽象方法是没有具体实现的方法,只是方法签名的声明,没有方法体。
public abstract class MyClass {
// 抽象方法
public abstract void myMethod();
// 非抽象方法
public void anotherMethod() {
// 方法体
}
}
抽象方法是一种没有实现的方法,只是声明了方法的签名。抽象方法必须声明在抽象类中,子类继承抽象类后必须实现抽象方法。
public abstract void myMethod();
// 抽象类
abstract class Shape {
// 抽象方法
public abstract double getArea();
// 非抽象方法
public void print() {
System.out.println("I am a shape.");
}
}
// 圆类,继承自Shape抽象类
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
// 实现抽象方法,计算圆的面积
public double getArea() {
return 3.14 * radius * radius;
}
}
// 矩形类,继承自Shape抽象类
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// 实现抽象方法,计算矩形的面积
public double getArea() {
return length * width;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Circle circle = new Circle(2.0);
Rectangle rectangle = new Rectangle(3.0, 4.0);
// 输出圆的面积和矩形的面积
System.out.println("Circle area: " + circle.getArea());
System.out.println("Rectangle area: " + rectangle.getArea());
}
}
以上代码展示了抽象类和抽象方法的基本用法,通过继承抽象类并实现抽象方法,可以完成对图形面积的计算,并利用多态机制调用不同的方法。