static

static修饰成员变量会把成员变量变成类变量。也就是说这个变量是所有对象共享的,只有一份。这个成员变量随着类的加载而准备就绪,与是否创建对象无关。
从这一点也可以推理出,static修饰的方法不能用成员变量或成员方法。因为类加载了不一定有对象,但有对象了类一定加载了。所以成员方法一定可以使用类的变量和方法。

构造块与静态构造块

构造块或静态构造块都是设计用来进行统一的初始化的。构造方法可能有很多种,为了保证在调用任何情况下都不出毛病,有时我们会需要构造块。

public class Main {
    {
        System.out.println("我是构造块");
    }
    ...
}

构造块在构造函数之前发挥作用。
当然,有的人/题目真的会考察这种顺序问题。其实这种东西只要写个demo测试一下就好了,没必要死记硬背。背了也得忘,何必呢。。。
静态构造块同理,一般在连接数据库的时候用。

继承

//语法很简单
class A extends B implements IC

构造方法和私有方法是不能继承的。私有成员变量可以,但是不能直接访问。想要在子类使用这些private属性,则需要getter。
子类构造函数一定会调用父类的构造函数。

覆盖(重写)

子类继承父类之后,可以覆盖一些父类的方法以面对新的需求。这样可以对修改关闭。
覆盖方法建议加注解@override,这样如果没有构成重写会报编译错误。
在Java5以前,覆盖要求返回值相同,参数相同,方法名相同。
Java5以后,可以返回子类类型。
如果要覆盖,要求访问权限单调不减,异常单调不增。

final

final修饰类则类不可继承。
final修饰普通类型则值不可改变。
final修饰方法则方法不能被覆盖,但可以被继承。
final修饰引用类型则引用变成常引用。
(final的命名规范是全员大写)