java web 05 : static、final
static
1.可以修饰成员变量,成员方法
2.随着类的加载而加载,优先于对象加载
3.只加载一次就会一直存在,不再开辟空间
4.静态变量全局唯一,全局共享,多个对象间共享
5.可以直接被类名调用
6.静态方法只能调用静态变量和方法,不能用this调用非静态变量和方法。非静态方法可以随意调用
static方法不可以重写,即使一模一样的声明也不是重写,因为静态资源是随着类存在的
7.static里不能出现this 和super ,因为static 在类加载时加载,此时还没有对象
************************************************************************************
补充:静态类
public class Outer {
private String name;
private int age;
public static class Builder {
private String name;
private int age;
public Builder(int age) {
this.age = age;
}
public Builder withName(String name) {
this.name = name;
return this;
}
public Builder withAge(int age) {
this.age = age;
return this;
}
public Outer build() {
return new Outer(this);
}
}
private Outer(Builder b) {
this.age = b.age;
this.name = b.name;
}
}
***************************************************************************************
final 关键字:
1.在继承结构中,父类的功能可以全都给子类用。
但是子类想要修改功能时,会发生重写,为了限制子类权限,用final将父类方法修饰为最终的。
即final修饰的方法不能被重写,但可以被继承
2.final修饰的成员变量要么声明时赋值,要么在构造方法里赋值,不能被重新赋值,但可以被继承
3.final修饰类时,这个类不能被继承