Java中的抽象类
抽象类(Abstract Class)是Java中用于定义某种概念框架或者共通基础的类,它不能被实例化,只能作为基类被继承。抽象类中可以包含抽象方法和普通方法,抽象方法是没有方法体的方法,用abstract
关键字声明。
如何编写抽象类
抽象类使用abstract
关键字定义,可以包含非抽象方法(具体方法)、属性和抽象方法。抽象方法只能声明,不能实现。
public abstract class Animal {
// 属性
private String name;
// 非抽象方法
public void eat() {
System.out.println(this.name + " is eating.");
}
// 抽象方法
public abstract void makeSound();
// 构造方法
public Animal(String name) {
this.name = name;
}
}
如何使用抽象类
抽象类不能被实例化,但是可以被继承。子类需要实现抽象类中的所有抽象方法。
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
// 实现抽象方法
@Override
public void makeSound() {
System.out.println(this.name + " says Woof!");
}
}
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
// 实现抽象方法
@Override
public void makeSound() {
System.out.println(this.name + " says Meow!");
}
}
使用抽象类
在主程序中,可以用抽象类类型来定义变量,并指向其子类的实例。
public class Main {
public static void main(String[] args) {
Animal dog = new Dog("Buddy");
dog.eat();
dog.makeSound();
Animal cat = new Cat("Whiskers");
cat.eat();
cat.makeSound();
}
}
这段代码中,Animal
是抽象类,Dog
和Cat
是它的子类,实现了makeSound()
这个抽象方法。在主方法中,我们通过Animal
类型引用了Dog
和Cat
的对象,这是抽象类的一个常见用途:提供一种多态性的实现方式。