编译看声明,JVM看实际。调用方法看实际,调用属性看声明。
一、构造方法
1.this()和super()必须放在首行,且不可同时出现
2.构造方法调用同类中的其他构造方法不可使用名字,需使用this()
二、继承
1.abstract类继承,子类必须实现父类所有abstract方法,否则子类需定义为abstract
2.父类不可转型为子类(this = (this)super编译通过,JVM运行报错)
3.重写规则
a.子类方法名修饰符的访问权限应该>=父类。public>protected>default>private
b.参数列表必须与父类方法的相同。
c.返回类型必须与父类方法的返回类型相同。
d.子类方法不能抛出新的异常或者比父类方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。
e.不能重写被标识为final的方法。
f.如果一个方法不能被继承,则不能重写它。如private方法
三、Throw Exception
1.catch和final都必须搭配try出现,try、try-catch、try-catch-final、try-final均可
2.Throwable-Error/Exception
3.方法内抛出错误未处理时,方法定义上需要加上Throws XXX,且调用该方法的方法需要处理,否则方法名也应加上Throws XXX或更宽范围
四、细节
1.继承且实现:先继承方法再实现接口,同名时,只写一个方法
2.break只在循环或switch中出现
3.for(int i : x),循环输出x中的值,i表示的是数值,不是index
4.ArrayList.remove();只移除匹配到的第一个元素。
5.Map均为自动排序。
6.switch-case语句中,JVM会寻找case语句率先执行,最后才执行default-
7.java代码加载顺序:main方法-(创建本类实例后)静态成员变量-静态代码块