权限修饰符:
private:私有权限,可以修饰成员、构造方法(可修饰内部类),被private修饰的成员只能够在本类中访问
public:公共权限,可以修饰成员和类,被 public 修饰的类可以跨包使用(被public修饰的类保存时文件名必须和类保持一致),若要跨包使用该类的成员,则该类的成员也要用 public 修饰。
default:默认权限,不写任何权限修饰符为默认权限,可以修饰成员和类,被该权限修饰的修饰成员和类只能在本包中使用。
protected:受保护权限,可以修饰成员(不能修饰类),在本包中和 default 权限一样,但是子类可以跨包使用父类中被 protected 修饰的成员.
本类 同包 子类 其他包和非子类
private yes no no no
default yes yes no no
protected yes yes yes no
public yes yes yes yes
final 关键字:
修饰类:被修饰的类不能被继承
修饰方法:被修饰的方法不能被重写
修饰变量:被修饰的变量不能被重新赋值
成员变量
类变量(static 修饰):在静态构造代码块、声明变量时指定该类变量的值,而且只能二者选其一
实例变量:只能在构造代码块、构造方法、声明变量时指定该实例变量的值,而且只能三者选其一
局部变量
可以在声明变量时指定值,也可以在后面代码中指定值,但只能指定一次。
注意:
被 final 修饰的变量系统不会对其进行初始化,需要程序员显示指定。final 修饰基本变量,则该变量不能被重新赋值。如果修饰的是引用变量,则该引用的地址不能改变,但是引用对象的内容可以改变。
什么时候用final
常量 PI = 3.1415926;
如果该方法很完善不需要被修改就可以用final修饰
JVM对final修饰的类、方法、变量都进行了优化使效率更高
static 关键字:
修饰变量:静态变量(类变量),静态变量是共享的,即该类的多有对象公用该变量
修饰方法:静态方法,静态方法不能访问非静态变量
修饰代码块:静态代码块,在加载类的时候运行,可以为静态变量赋值
修饰内部类:静态内部类,被修饰的内部类不能访问外部类的非静态成员,并且其他类生成该内部类的方式也不一样了:Outer.Inneroi = newOuter.Inner();
注意:静态成员既可以用对象调用,也可以用类名调用