重写要遵循“两同两小一大”
- 方法名,形参列表相同;
- 返回类型,声明抛出异常比父类小或相同;
- 子类访问方法的的访问权限比父类更大或相同
- 重载必须修改参数列表
类变量,成员变量和局部变量的存放空间
- 类变量是指
static
修饰的类里所包含的变量,不管是基本数据类型还是引用类型都是存放在堆; - 成员变量是指非static修饰的的类里所包含的变量,不管是基本数据类型还是引用类型都是存放在堆;
- 局部变量是指类里的方法里所包含的变量,若是基本数据类型,则存放在栈;若是引用类型,则该变量的值是引用地址,存放在栈,而所引用的对象存放在堆
构造方法的调用
- 在调用子类构造方法之前会先调用父类的无参构造方法,若父类没有无参构造方法,则编译报错
Throwable,throw,throws
Throwable
是Exception
(异常)和Error
(错误)的父类throws
的作用是在方法声明的后面指明该方法可能会抛出异常(并不一定真的会出现异常)。如果在执行这个方法时出现异常,那么这个方法就不再执行了,而是抛出一个异常,把这个异常抛给调用他的方法,并且让调用他的那个方法去处理。- 与
throws
不同,throw
是一定会抛出一个异常,而且是在方法体内部使用。
try catch 语句中有return 的各类情况
- 在正常情况(即程序正常执行
try catch finally
语句块,不会在语句中出现退出程序、线程终止等特殊情况)下,都会执行finally
语句块; - 如果
finally
中有return
,则程序会走finally
中的return
;如果没有,则先执行try
或者catch
中的return
,将其存入临时栈中,执行完finally
语句后才返回临时栈中的值。
transient 关键字
- 阻⽌实例中那些⽤此关键字修饰的的变量序列化;
- 当对象被反序列化时,被
transient
修饰的变量值不会被持久化和恢复; transient
只能修饰变量,不能修饰类和方法。