编写抽象类程序的基本步骤如下:
使用`abstract`关键字声明抽象类
```java
abstract class ClassName {
// 类的内容
}
```
在抽象类中定义抽象方法
抽象方法使用`abstract`关键字声明,没有方法体,只有方法签名。子类必须实现这些抽象方法。
```java
public abstract void methodName();
```
在抽象类中定义非抽象方法
非抽象方法可以有具体的实现。
```java
public void nonAbstractMethodName() {
// 方法的实现
}
```
提供构造方法
抽象类可以有构造方法,用于初始化子类对象。构造方法的签名与普通类相同,但不能使用`abstract`关键字。
```java
public AbstractClassName(参数列表) {
// 构造方法的实现
}
```
定义成员变量
抽象类可以包含普通成员变量和静态成员变量,这些变量可以在子类中被继承和修改。
```java
private String variableName;
public static int staticVariableName;
```
定义内部类
抽象类可以包含内部类,这些内部类可以访问外部类的成员(包括私有成员)。内部类可以是静态的或非静态的。
```java
private class InnerClassName {
// 内部类的实现
}
public static class StaticInnerClassName {
// 静态内部类的实现
}
```
下面是一个简单的抽象类示例,展示了如何编写一个抽象类`Animal`,其中包含一个抽象方法`makeSound`和一个非抽象方法`breathe`:
```java
abstract class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void breathe() {
System.out.println(name + "正在呼吸中...");
}
public abstract void makeSound();
}
class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
@Override
public void makeSound() {
System.out.println(name + "汪汪汪!");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("旺财", 3);
dog.breathe(); // 输出: 旺财正在呼吸中...
dog.makeSound(); // 输出: 旺财汪汪汪!
}
}
```
在这个示例中,`Animal`类是一个抽象类,包含一个抽象方法`makeSound`和一个非抽象方法`breathe`。`Dog`类继承了`Animal`类,并实现了`makeSound`方法。通过这种方式,`Dog`类可以使用`Animal`类中定义的通用方法和属性。