目录
一.抽象类
1.抽象类的概念
- 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就称为抽象类
- 抽象类是一种不能被实例化的类,通常用于定义其他类的通用结构和行为
- 抽象类声明:通过 abstract ;例如:public abstract class Shape{......}
- 抽象类是一种类,内部可以包含普通方法 和属性 ,以及构造方法
2.抽象类的特性
①抽象类不能直接实例化对象
java
public abstract class Shape{
abstract public void draw();
}
java
public class Test {
public static void main(String[] args) {
//Shape shape = new Shape();
}
}

②抽象方法不能被 private 和 final 以及 static 修饰
- 因为抽象方法就是为了让子类重写的



③.抽象类必须被继承,并且继承后的子类要重写父类中的抽象方法;否则子类也是抽象方法,并且子类必须要使用abstract修饰
java
public abstract class Shape{
abstract void draw();
}
java
public class Rect extends Shape {
@Override
public void draw() {
System.out.println("画一个矩形....");
}
}
java
public class Test {
public static void drawShape(Shape shape){
shape.draw();
}
public static void main(String[] args) {
drawShape(new Rect());
}
}
④抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
⑤抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
3,使用抽象类的注意事项
①抽象类中的抽象方法可以没有具体的实现

②如果一个类中有抽象方法,那么这个类必须是抽象类

③抽象类和普通类的区别在于:抽象类中可以包含从抽象方法
4.抽象类的作用
- 抽象类本身不呢个被实例化,要想使用,只能创建该抽象类的子类,然后让子类重写抽象类中的抽象方法
- 使用抽象类相当于多了一层编译器的校验
抽象类实例:
java
abstract class Animal {
// 抽象方法
abstract void makeSound();
// 具体方法
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound(); // 输出: Bark
dog.eat(); // 输出: Eating...
}
}