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

抽象类

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 抽象类的作用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值