Java 基础系列(六) --- 浅谈对Java中抽象类的理解

发布于:2022-11-06 ⋅ 阅读:(346) ⋅ 点赞:(0)

抽象类

1 语法规则

 在上文5.1的示例中,父类Shape中的draw方法好像并没有什么实际的工作,主要的画图都是由Shape中的各种子类的draw方法来完成的,像这种没有实际工作的方法,我们可以把它设计成一个抽象方法(abstract method),包含抽象方法的类我们称之为抽象类(abstract class).

abstract class Shape {
     abstract public void draw();
}
  • 在draw方法前加上abstract关键字,表示这是一个抽象方法;
  • 抽象方法没有方法体({ }),不能执行具体的代码;
  • 对于包含抽象方法的类,必须加上abstract关键字,表示这是一个抽象类.

2 注意事项

  • 抽象类不能直接实例化;
    在这里插入图片描述
  • 抽象方法不能private;
    在这里插入图片描述
  • 抽象类中可以包含其他的非抽象方法,也可以包含字段,这个非抽象方法和普通方法的规则都是一样的,可以被重写,也可以被子类直接调用.
abstract class Shape {
    abstract public void draw();
    public void func() {
        System.out.println("抽象类中的非抽象方法!");
    }
}
 class Bird extends Shape {
     @Override
     public void draw() {
         
     }
 }
public class TestDemo {
    public static void main(String[] args) {
        Shape shape = new Bird();
            shape.func();
    }
}

运行结果:
在这里插入图片描述

3 抽象类的作用

  • 抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类,然后让子类重写抽象类中的抽象方法;
  • 抽象类存在的最大意义就是为了被继承;
  • 使用抽象类相当于多了一重编译器的校验,实际工作不应该由父类完成,而应该由子类完成,如果误用父类了,使用普通编译器是不会报错的,但是父类如果是抽象类的话,就会在实例化的时候提示错误,让我们能尽早发现问题.

网站公告

今日签到

点亮在社区的每一天
去签到