Java初接触 | 面向对象进阶【包、权限修饰符、final 常量、枚举、抽象类】

128 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2月更文挑战」的第2天

什么是包?

  • 包是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护。
  • 建包的语法格式:package 公司域名倒写.技术名称。报名建议全部英文小写,且具备意义
    image.png
  • 建包语句必须在第一行,一般IDEA工具会帮助创建

导包

  • 相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!导包格式:import 包名.类名;
  • 假如一个类中需要用到不同类,而这个两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问。

权限修饰符

什么是权限修饰符?

  • 权限修饰符:是用来控制一个成员能够被访问的范围的。
  • 可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制。

权限修饰符的分类和具体作用范围:
权限修饰符:有四种作用范围由小到大(private -> 缺省 -> protected - > public ) image.png

final

final的作用

  • final 关键字是最终的意思,可以修饰(方法,变量,类)
  • 修饰方法:表明该方法是最终方法,不能被重写。
  • 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
  • 修饰类:表明该类是最终类,不能被继承。

final修饰变量的注意

  • final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
  • final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。

常量

常量概述和基本作用

常量

  • 常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。
  • 常量的作用和好处:可以用于做系统的配置信息,方便程序的维护,同时也能提高可读性。

image.png
常量命名规范:英文单词全部大写,多个单词下划线连接起来。

常量的执行原理

  • 在编译阶段会进行“宏替换”,把使用常量的地方全部替换成真实的字面量。
  • 这样做的好处是让使用常量的程序的执行性能与直接使用字面量是一样的。

枚举

枚举的概述

  • 枚举是Java中的一种特殊类型
  • 枚举的作用:"是为了做信息的标志和信息的分类"。

定义枚举类的格式:
image.png

反编译后观察枚举的特征: image.png

枚举的特征:

  • 枚举类都是继承了枚举类型:java.lang.Enum
  • 枚举都是最终类,不可以被继承。
  • 构造器都是私有的,枚举对外不能创建对象。
  • 枚举类的第一行默认都是罗列枚举对象的名称的。
  • 枚举类相当于是多例模式。

抽象类

抽象类概述

抽象类

  • 在Java中abstract是抽象的意思,如果一个类中的某个方法的具体实现不能确定,就可以申明成abstract修饰的抽象方法(不能写方法体了),这个类必须用abstract修饰,被称为抽象类。
    image.png

抽象的使用总结与注意事项

  • 抽象类可以理解成类的不完整设计图,是用来被子类继承的。
  • 一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

抽象类的特征、注意事项小结
特征和注意事项

  • 有得有失: 得到了抽象方法,失去了创建对象的能力。
  • 抽象类为什么不能创建对象?
  • 类有的成员(成员变量、方法、构造器)抽象类都具备
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 一个类继承了抽象类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
  • 不能用abstract修饰变量、代码块、构造器。

final和abstract是什么关系?

  • 互斥关系
  • abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承。
  • 抽象方法定义通用功能让子类重写,final定义的方法子类不能重写。