一、访问权限修饰符
1、public
1)public修饰的类在本类、同包、子类、其他包中互相访问都是可以的;
2)public可以修饰任何类而且类名要与文件名相同,protected不可以修饰类。
2、protected
1)protected修饰的类在本类、同包、子类中互相访问都是可以的,不可以在包外没有继承关系的类中互相访问;
2)public可以修饰任何类而且类名要与文件名相同。
3、default
1)default修饰的类在本类、同包中互相访问都是可以的,不可以在包外不管有没有继承关系的类都不可以互相访问;
2)default(不写默认指定default)同public一样可以修饰任何类而且类名要与文件名相同。
4、private
1)private修饰的类只能在本类中访问;
2)private同protected一样不可以修饰类。
注意:Java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。
二、特征修饰符
1、static 关键字
1)属性:被static关键字修饰的属性叫类变量,是全类共有的,可直接用类名访问。初始化类变量是在类加载是完成;
2) 类加载:当虚拟机JVM第一次使用一个类时,会通过classpath找到这个类所对应的字节码文件,将这个文件中包含的类信息全读入JVM并保存起来,使下次再用这个类时就不需要再去加载,一个类只加载一次;
3)方法:被static关键字修饰的方法叫静态方法,可直接用类名访问;
静态方法的特点:
(1)静态方法只能访问类的静态成员(静态属性和静态方法);
(2)静态方法只能被子类中的静态方法覆盖,并且没有多态。
例子:A a=new B( ); A类是B类的父类
A中有m()方法,B中也有m()方法,则a.m()调用的是B中的m()方法;
如果A、B中的m()方法都是静态方法,则a.m()调用的是A中的m()方法。
4)静态代码块:在类加载时运行一次。
2、final关键字
1)变量:被final修饰的变量成为常量,一旦赋值,不能被修改;
2)方法:如果一个方法被final修饰,说明该方法不能被子类覆盖 ;
3)类:如果一个类被final修饰,说明该类不能被继承。
3、abstract关键字
1)类:不能创建对象,但可以声明对象的引用 ;
2)方法 :只有定义,没有实现;
(1)如果一个类中有抽象方法,则这个类必须是抽象类;
(2)子类继承一个抽象类,如果子类不希望也成为抽象类,就必须实现父类中所有的抽象方法;
(3)抽象类中有构造方法 。
注意:以下修饰符一起用是无意义的,会导致编译错误:
1)abstract 与 private
2)abstract 与 final
3)abstract 与 static