0
点赞
收藏
分享

微信扫一扫

JAVA基础学习笔记——抽象类

梯梯笔记 2022-03-26 阅读 67
java

5、抽象类

5.1概念

我们把一个不是具体的功能称作抽象的功能,而一个类中有抽象的功能,则该类必须是抽象类

5.2关键字:abstrac

5.3注意

  • 抽象类可以没有抽象方法
  • 抽象方法没有方法体
    public abstract void eat(){};这不叫没有方法体,这叫空方法体,去掉大括号才叫没有方法体
  • 抽象类不能实例化(就是不能创造对象),因为它不是具体的
  • 若想抽象类的子类不是抽象类,就要重写所有的抽象方法,这样子类不是抽象类,就可以去创建对象
  • 以后提到抽象类的实例化,就得想到多态
    例如Animal a= new Cat();其中Animal是抽象类 Cat()是具体子类,则这句话不会报错
    但其实我写成Cat c= new Cat();一样可以使用各种功能,感觉比上面的那句好用,但是我又发现,这样好像不能调用父类的构造方法对其数据进行初始化

5.4抽象类的成员特点

  • 成员变量
    可以是常量,也可以是非常量
  • 构造方法
    有,用于子类访问父类数据的初始化
  • 成员方法
    可以是抽象的,也可以是非抽象的

5.5抽象类中的成员方法特性

  • 抽象方法
    强制要求子类做的事情
  • 非抽象方法
    子类继承的事情,提高代码的复用性

5.6理解

就是每个子类的具体动作不同,我就在父类中定义为抽象的。例如吃是一个抽象动作

此处有一个例子,可以深入对多态的理解见AbstractDemo

5.7补充

  • 一个类没有抽象方法,却设置为抽象类的意义:不让你创建这个类的对象,想用就得用它的子类
  • abstract关键字不能和哪些关键字共存
    private
    抽象方法就是为了让子类重写它,而标注了private没法对其重写
    final
    final标记的不能被重写
    static
    无意义,因为静态方法可以类名调用,而抽象方法没方法体,所以二者矛盾但不报错,只是没意义
举报

相关推荐

0 条评论