【Java】—— 抽象类

前言

我们在前一篇文章讲了继承和多态,如果说父类中的方法被子类重写后,再通过父类引用调用此方法则是调用的重写后的方法。那么原来父类中的方法是否实现就无所谓了,那么有没有一种类生来就是被继承的,然后重写其方法的呢?没错,他就是抽象类!🤩

一、抽象类的概念

在打印图形例子中, 我们发现, 父类 Shape中的draw方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它设计成一个 抽象方法(abstractmethod), 包含抽象方法的类我们称为 抽象类(abstract class).
在这里插入图片描述

二、抽象类的语法

语法会涉及到一个关键字 -> abstract
abstract修饰的方法是抽象方法,被 abstract修饰的类是抽象类,值得一提的是抽象方法一定在抽象类中,而抽象类中不是非要有抽象方法滴!
注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法

// 抽象类:被abstract修饰的类
public abstract class Shape {
  // 抽象方法:被abstract修饰的方法,没有方法体
  abstract public void draw();
  abstract void calcArea();
  // 抽象类也是类,也可以增加普通方法和属性
  public double getArea(){
    return area;
 }
  protected double area;   // 面积
}

三、抽象类的特性

1、抽象类不能直接实例化对象

    Shape shape = new Shape();

在这里插入图片描述
2、抽象方法不能被private修饰
3、抽象方法不能被final和static修饰,因为抽象方法要被子类重写
4、抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰

四、抽象类的作用

抽象类的存在相当于让编译器给我们多加了一层校验,
例如:
使用抽象类的场景就如上面的代码, 实际工作不应该由父类完成, 而应由子类完成. 那么此时如果不小心误用成父类了, 使用普通类编译器是不会报错的. 但是父类是抽象类就会在实例化的时候提示错误, 让我们尽早发现问题.

其实很多的语法存在的意义就是为了“预防出错”,像定义一个常量用final修饰,如果改变其值的话编译器就会报错等等

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值