规则规范
一个文件只能有一个public类,与文件名同名,建议一个文件只定义一个类
成员变量 规范不在声明处赋值
Constructor 构造方法 / 构造器
this
代表 本类/本类的实例,
this.propName
当前对象 属性
this()
本类的构造方法,必须在第一行
m(this)
传递 当前对象 给方法m
extends 继承
1 | class 父类 { |
子类,拥有父类中的 属性和方法(非 private 的),也可以重写
private 的成员变量实际上也被继承了,只能通过 getter 和 setter 访问
static 方法可以被继承,但不能被重写,如果子类定义了同名方法,则是隐藏了父类的方法(不能使用@Override
)
super
super()
代表父类的构造器,
只能放在子类构造器内的第一行,
只能调用一次
如果不写super,默认隐式调用一个 super()
如果父类没有空参构造器,必须显式调用 super(...)
super.methodName()
调用父类方法
虚方法
虚方法:在运行时由实例的实际类型决定的方法,而不是在编译时就确定的方法。
方法不是 final 或 static 或 private 的,就是虚方法。
可继承
- 虚方法表中的
- static方法(但不能重写)
Override 重写
@Override
重写方法注解,检查作用
重写要求:
- 名称、形参一致
- 访问权限,必须大于等于父类(只能更宽松)
- 返回值类型,必须小于等于父类(等于父类 或其子类)
- 只有虚方法表中的,才能重写
不能被重写的(使用重写注解错误):
static 方法可以被继承,但不能被重写,如果子类定义了同名方法,则是隐藏了父类的方法
private 不能被重写
final
final类, 最终类,不能被继承:
1 | final class 类名 {} |
final 方法,不能被子类重写:
1 | [public/private/default/protected] final 返回值类型 方法名(){} |
以及,final变量。
多态
向上转型:
1 | Animal a = new Dog(); //向上转型 |
向下转型:
1 | Animal a = new Dog(); //向上转型 |
类型判断:
1 | if(a instanceof Cat) { |
Java14 新特性:
1 | // 如果结果为 true ,则直接进行类型转换 |
default 方法
Java8新特性,可以被实现类继承、重写或忽略,也可以被接口的引用调用
必须有方法体,如果 Override 需去掉 default
可变参数
1 | void method(String...s) { |
可变参数个数,底层是数组