修饰符汇总:
一:public protected default private
修饰类,修饰方法,修饰属性,修饰代码块。
类:
顶级类只能用public 修饰,顶级类不能使用private 和protected 修饰。
外部类可以被public修饰或者默认不写,不能用private和protected。
内部类可为静态,可用protected和private修饰。
方法:
通常方法可以被四个访问修饰符修饰,构造方法也可以被四个访问修饰符修饰。
抽象类中的抽象方法不能被private修饰,可以被其他三个修饰。
而接口中的方法只能被public修饰(默认也是public)。
属性:
属性可以被四个修饰符修饰,接口中的属性只能被public修饰(默认也是public)。
代码块:
代码块不能被任何修饰符修饰(因为代码块里面是属性还是方法,这个属性和方法都有自己的修饰符)。
构造代码块的作用:可以初始化非静态属性,构造代码块优先于构造函数执行,可以放在构造函数中。
静态代码块的作用:可以初始化静态属性,类加载时加载,不可以放在构造函数中。
二:final:
修饰类:最终类,最终类不能被继承。最终类通常完成一定标准功能的类,例如Java库中的数学类Math等。
修饰方法:用final修饰的方法不能被继承,不能被重写(例如Object中的wait()),但是可以重载。
常量:定义局部常量用final,定义全局常量用static final (或者final static)。
三:static:
修饰类:可以修饰内部类
修饰属性:static可以修饰任何属性。
修饰方法:不能修饰抽象方法,不能修饰构造方法。
修饰代码块:被修饰的代码块叫静态代码块
四:abstract
修饰类(抽象类):抽象类不能被实例化。抽象类就是用来被继承的。
修饰方法(抽象方法):能被修饰的方法叫做抽象方法,只有方法的声明,没有方法的实现,以分号结束。
不能修饰:不能修饰属性、私有方法、构造器、静态方法、final 方法。