重写要遵循“两同两小一大”

  • 方法名,形参列表相同;
  • 返回类型,声明抛出异常比父类小或相同;
  • 子类访问方法的的访问权限比父类更大或相同
  • 重载必须修改参数列表

类变量,成员变量和局部变量的存放空间

  • 类变量是指static修饰的类里所包含的变量,不管是基本数据类型还是引用类型都是存放在堆;
  • 成员变量是指非static修饰的的类里所包含的变量,不管是基本数据类型还是引用类型都是存放在堆;
  • 局部变量是指类里的方法里所包含的变量,若是基本数据类型,则存放在栈;若是引用类型,则该变量的值是引用地址,存放在栈,而所引用的对象存放在堆

构造方法的调用

  • 在调用子类构造方法之前会先调用父类的无参构造方法,若父类没有无参构造方法,则编译报错

Throwable,throw,throws

  • ThrowableException(异常)和Error(错误)的父类
  • throws的作用是在方法声明的后面指明该方法可能会抛出异常(并不一定真的会出现异常)。如果在执行这个方法时出现异常,那么这个方法就不再执行了,而是抛出一个异常,把这个异常抛给调用他的方法,并且让调用他的那个方法去处理。
  • throws不同,throw是一定会抛出一个异常,而且是在方法体内部使用。

try catch 语句中有return 的各类情况

  • 在正常情况(即程序正常执行try catch finally语句块,不会在语句中出现退出程序、线程终止等特殊情况)下,都会执行finally语句块;
  • 如果finally中有return,则程序会走finally中的return;如果没有,则先执行try或者catch中的return,将其存入临时栈中,执行完finally语句后才返回临时栈中的值。

transient 关键字

  • 阻⽌实例中那些⽤此关键字修饰的的变量序列化;
  • 当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复;
  • transient 只能修饰变量,不能修饰类和方法。