零基础Java:第十六讲(关键字:final、抽象类(abstract class))

235 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

关键字:final

  • 关键字:final

    • 在java中声明类、属性和方法时,可使用关键字final来修饰,表示最终

      • final修饰类不能被继承。提高安全性,提高程序的可读性
      • final修饰方法不能被子类重写
      • final修饰变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次

抽象类(abstract class)

  • 抽象类(abstract class)

    • 随着继承层次中一个个新的子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。
    • 相关概念

      • 用abstract关键字来修饰一个类时,这个类叫做抽象类
      • 用abstract来修饰一个方法时,该方法叫做抽象方法

        • 抽象方法:只有方法的声明,没有方法的实现,以分号结束:abstract int abstractMethod(int a);
      • 含有抽象方法 的类必须被声明为抽象类
      • 抽象类不能被实例化。抽象类是用来作为父类被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类
      • 不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法
    • 总结:只要类中有一个抽象方法,那么这个就必须是抽象类
    • 思考

      • 为什么抽象类不可以使用final关键字声明?

        • 答:抽象类不能实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。final修饰的类是最终的类,不能被继承
      • 一个抽象类中可以定义构造器吗?

        • 答:抽象类可以有构造方法,但是不能直接创建抽象类的实例而已,即new Xxx()是非法的
    • 练习

      • 三个类:父类是工人Employee,两个子类分别是管理者Manager、下属CommonEmployee