static:
用static修饰的属性和方法是为了实现“共享”,类对象共享同一个属性或方法。在类加载时加载,销毁时释放,生命周期长。
static修饰 | 可以 | 不可以 |
属性和方法 | √ | |
类 | √(内部类除外) | |
局部变量 | √ | |
构造方法 | √ |
构造方法不能是静态的,因为不希望创造出很多相同的对象,如果需要创造许多相同的对象,则采用单例模式,而不是将构造方法设为static实现。
成员方法中 | 可以访问静态成员 |
可以调用静态方法 | |
在静态方法中 | 不能调用普通方法 |
可以调用静态方法 | |
不支持this关键字 |
调用静态成员/方法: 类名.属性/方法 或 对象.属性/方法
static修饰的方法叫静态方法或者类方法,修饰的属性叫静态属性或者类属性。
静态方法是属于类的,非静态方法是属于对象的
不是静态类说明没有静态对象
外部类不能为静态类
final:
final修饰的: (1) 方法: 可以被调用但不能被重写
(2) 属性: 不允许被重新赋值,可以先用final声明,用的时候再赋值。
(3) 类: 不可继承
(4) 变量: 如果是引用型,初始化之后不能再指向另一个对象,但是值可以修改。(所指对象的内容的可变的)
(5) 不能修饰构造方法(final修饰的不允许被继承自然是不能修饰构造方法啦——)
可以和static一起修饰的变量,相当于常量。
final可以提高性能但是降低了可扩展性。