static
类变量和类方法(静态变量和静态方法)
- 类变量和类方法再字节码加载完毕后就已经被初始化,在JVM中独一份
- 在创建对象之前就可以通过类名调用类方法
- 类中的各对象在创建后都保留类变量的副本,它们共享类变量
- 类方法不能调用实例方法,这与它们在JVM先后顺序有关
实例变量和实例方法(非静态变量和非静态方法)
- 实例变量会在对象实例化后初始化,有多少对象就有多少实例变量
- 实例方法也在类字节码加载完毕后就准备好了,但是在对象实例化之前不能被调用
- 实例方法可以调用类方法,反之则不行
静态工厂设计模式
构造器被private修饰时,就不能够在本类外直接通过new新建对象
此时,可以在类内部声明一个public修饰的静态工厂方法代替构造器的功能
它返回本类对象,方法体中调用私有化的构造器创建对象,并返回这个对象
- 静态工厂方法命名比构造方法更灵活,不必规定为类名
- 静态工厂方法返回的数据类型更丰富,而不仅仅是所在类对象
构建设计模式
- 提供一个或多个构造对象的静态工厂方法,参数通常时对象的必填属性
- 同时还会提供一些可选属性的设值方法,某种程度上替代了set方法
- 这些设值方法在对可选属性赋值后返回了本对象(return this),因此可以被连缀调用



