常见的修饰符分为四种:与继承有关的修饰符 abstract static和final;与可见性有关的public、protected、private和default;与多线程有关的修饰符syncharonized和volatile;与序列化有关的修饰符transient。除此之外还有native修饰符。
在静态方法内不允许访问非静态变量和方法,比能实现this和super关键字。
静态方法必须被实现。静态方法用来表示某个类所特有的功能,这种功能的实现不依赖于类的具体实例,也不依赖于它的子类。既然如此,当前类必须为静态方法提供实现,即一个静态方法不能定义为抽象方法。
static abstract void method;//编译出错,static和abstract不能同用。修饰内部类时需要注意:
1,非静态的内部类不能包含静态的方法和成员//和修饰方法时一样,非静态方法不能有静态的变量
2,静态的内部类可以用final或abstract修饰,但两者不可以同时用
3,静态方法不会被继承,所以不可以是抽象的。
final:
final修饰的类成员是不可改变的,它可以修饰类,方法和变量。
1,用final修饰的类不能被继承,没有子类
2,用final修饰的方法不能被子类的方法重写
3,用final修饰的变量表示常量,只能被赋值一次
总结:1,如果一个类已经是final,再给里面的方法加上final是没有意义的
2,final和static同时修饰方法的话,因为被static修饰后不存在继承,所以这时final是多余的。
3,final和static可以同时修饰成员,这是有意义的;表示该成员不依赖于类的实例,且只能被赋值一次
4,final和static可以同时修饰内部类,这是有意义的;表示内部类不依赖于外部类的实例,而且不可以有子类
5,抽象意味着继承,所以abstract和final任何时候都不可以同时用。
static和abstract不能连用,final和abstract不能连用,final和static可以连用,编译通过。static,final和abstract都不能修饰构造方法,因为构造方法仅仅是在构造对象时调用,也不能被继承