Java修饰符,
Java修饰符,
访问修饰符
default (即缺省,什么也不写)使用默认访问修饰符,在同一类,在同一包内的类是可见的。
*public*
接口都隐式声明为public static final ,接口里的方法默认情况下访问权限为public
不同包中的类虽然是public,但在访问时需要导入所在类的包:import 包
*protected*
protected不能修饰类和接口、接口的成员变量、成员方法,可修饰类的成员变量和方法。
~~~子类与父类在同一个包中,父类中protected成员变量、方法、构造方法可被子类访问
~~~子类与父类在不同包中,子类实例可访问其从父类继承来的protected方法,无法访问父类实例的protected方法
*private*
private修饰的变量、方法只能被所属的类访问,无法继承,接口和类不能声明为private类型
父类中声明为public的方法在子类中也必须是public
父类中声明为protected的方法要么为protected要么为public
父类中声明为private的方法无法被继承
非访问修饰符
*static* 修饰类变量和类方法
静态变量:一个类无论实现多少次实例,它的静态变量只有一个拷贝,静态变量也称为类变量,局部变量无法声明为静态变量。
静态方法:static声明的方法独立于对象存在,静态方法不能使用非静态变量,静态方法从参数列表中获得数据然后计算这些数据。
static变量只能初始化一次。
static变量相当于是类的公有属性,不会根据实例变化而变化。
static变量不是说不能改变,不能改变的量为常量,static变量不会因为函数调用变化而变化,在某个实例中修改了static变量的值,则它在所有的实例、类中都会是新的值。
*final*
final变量只能被显式地被初始化且只能初始化一次,final对象的引用不能指向不同的对象,但final对象的数据可以变
final与static一起创建一个类常量:public final static a=6;
类中的final方法可以被子类继承但不能被子类修改,声明final方法的主要目的就是为了该方法的内容不被修改
final类不能被继承,没有类能够继承final类的任何特性。
*abstract*
抽象类不能用来实例化,声明抽象类的唯一目的就是为了之后对该类进行扩充。
如果一个类中含有抽象方法,那么这个类只能声明为抽象类。
抽象类中可以有抽象方法和非抽象方法。
一个类不能同时用abstract和final进行修饰
抽象方法只有方法体,但没有具体实现。该方法的具体实现是在子类中实现的。 例: public abstract method();
任何继承抽象类的子类必须要实现父类的所有抽象方法,除非该子类也是抽象类
*synchronized*
synchronized修饰的方法同一时间只能被一个线程访问
*transient*
序列化的对象包含被transient修饰的实例变量时,JVM跳过该特定的变量。
该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。
*volatile*
volatile修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。若该成员变量值发生改变,会强制将变化的值写回共享内存,这样在不同线程同一时间看到某个成员变量同一个值。‘
一个volatile对象引用可能是null。
总结
相关文章
- 暂无相关文章
用户点评