前言
在Java中,抽象类是一种特殊的类,它无法被实例化。它只能被用作其他类的基类,以便子类可以继承它的属性和方法。今天我们就来谈谈JAVA中的抽象类。
抽象类
抽象类是一种特殊的类,它不能被实例化,而只能被继承。抽象类的主要作用是。如果一个类中有至少一个抽象方法,那么这个类必须被声明为抽象类。
抽象类的特点
- 抽象类不能被实例化。
- 抽象类可以包含普通方法和属性。
- 抽象类中可以定义抽象方法。
- 继承抽象类的子类必须实现父类中的所有抽象方法,否则子类也必须被声明为抽象类。
- 抽象类可以允许不实现抽象方法,但这种情况下,子类必须再次声明抽象方法并实现它。
继承抽象类
Java继承抽象类是指一个子类通过继承一个抽象类来实现抽象类中定义的抽象方法,并可以重写非抽象方法。
实现方式
- 定义一个抽象类,使用abstract关键字,抽象类中可以包含抽象方法和非抽象方法。
public abstract class Animal {
public abstract void run();
public void eat() {
System.out.println("eating...");
}
}
- 定义一个子类,使用extends关键字继承抽象类。
public class Dog extends Animal {
@Override
public void run() {
System.out.println("Dog is running...");
}
}
注意:子类必须实现抽象类中定义的所有抽象方法。
- 创建子类对象,并调用抽象类中的方法。
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.run(); // 输出:Dog is running...
animal.eat(); // 输出:eating...
}
}
注意:抽象类不能被实例化,但可以通过子类的对象来实现多态。
抽象方法
Java的抽象方法是一种没有实现代码的方法,需要由子类来实现具体的逻辑。在Java中,抽象方法必须被定义在抽象类中,抽象类不能被实例化,只能被继承。抽象类中可以包含非抽象方法,但至少要包含一个抽象方法。
实例
public abstract class Shape {
protected int x, y; // 坐标
public Shape(int x, int y) {
this.x = x;
this.y = y;
}
// 抽象方法,必须在子类中实现
public abstract void draw();
// 普通方法
public void move(int deltaX, int deltaY) {
x += deltaX;
y += deltaY;
}
}
public class Circle extends Shape {
private int radius; // 半径
public Circle(int x, int y, int radius) {
super(x, y);
this.radius = radius;
}
@Override
public void draw() {
System.out.println("Drawing Circle");
}
}
public class Square extends Shape {
private int side; // 边长
public Square(int x, int y, int side) {
super(x, y);
this.side = side;
}
@Override
public void draw() {
System.out.println("Drawing Square");
}
}