JavaSE(上)-Day10
多态
- 什么是多态:对象的多种形态
- 多态的前提是:有继承或实现关系;子类重写父类的方法,父类接收子类对象
- 多态的好处:父类作为形参时,可以接收任何的子类对象,可调用子类的重写方法
多态中成员变量的调用
- 编译过程看左边,运行过程也看左边
多态中成员方法的调用
- 编译过程看左边,运行过程看右边
多态的优缺点
- 当父类作为参数时,可以接收任意的子类对象
- 但是参数不能调用子类的特有功能
- 想要调用子类的特有功能需要强制类型转换
- 转换如果类型不一致,可能会报错,classCaseException
- 可以通过 参数 instanceof 子类,判断是不是可以转换成这个类,返回值为true,表示是,返回值为false表示
- JDK14增加了新特性,简化了代码让判断和强转一气呵成,参数 instanceof 子类 变量名,是这个子类,就会为变量名赋值
包
- 包的本质是文件夹,用于管理不同的Java类,便于代码的维护
- 包的书写规则是公司的域名反写+包的作用,需要全部小写,见名知意
- 全类名,也叫全限定名是包名+类名
- 如果引用的类是同一个包下,是不需要导包的
- 如果引用的类是java.lang下的,也是不需要导包的
- 如果引用的是其他包下的,是需要导包或者写全类名的
- 如果引用了两个不同包下的同名类,是需要使用全类名来区分的
final关键字
- final修饰的关键字,可以修饰类,方法,变量
- final修饰的类不可以被继承,如String,Math
- final修饰的方法,不可以被子类继承到,无法重写
- final修饰的变量,只能赋值一次,被称为常量,大写用下划线分隔
- 常量如果是基本数据类型,值不可以改变
- 常量如果是引用数据类型,地址值不可以改变,内存中的成员变量是可以改变
权限访问修饰符
关键字 | 本类 | 本包 | 其他包子类 | 项目 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
- private和public日常用的最多
- private主要用于修饰成员变量,一些频繁被调用的方法也会被设置为private
- public主要用于修饰成员方法和类
代码块
- 代码块分为三种,局部代码块,构造代码块,静态代码块
- 局部代码块在方法体内部,用于控制变量的生命周期,随着内存的增多,被淘汰了
- 构造代码块与成员变量同级,用于提取构造方法中的重复代码,它先于构造方法运行,局限性大,不常使用
- 静态代码块是用static修饰的构造代码块,用于初始化静态属性,随着字节码文件加载到元空间就执行,只能调用静态成员