Java 的小白学习笔记四(修饰符)
一、访问控制修饰符
1. default(什么也不写):在同一包内可见,不使用任何修饰符。
2. private:在同一类内可见。不能修饰类(外部类)
3. public:对所有类可见。
4. protected:对同一包内类和子类可见。不能修饰类(外部类)
default和public使用对象为类、接口、变量、方法。
private和protected使用对象为变量和方法。
访问控制和继承
父类声明为public的方法子类中也必须为public、
父类中声明为protected的方法在子类中声明为public或protected,不能为private。
父类中声明为private的方法,子类不能继承
二、非访问控制修饰符
1. static:修饰静态方法和静态变量。
静态方法:不能使用非静态变量。
静态变量:只有一份拷贝,局部变量不能被声明为static变量
2. final:修饰类、方法、变量。修饰的类不能被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,不可修改。
3. abstract:用来创建抽象类和抽象方法。
抽象类:
不能用来实例化对象,是为了将来对该类进行扩充。
若一个类包含抽象方法,该类一定要声明为抽象类。
抽象类可以包含抽象方法和非抽象方法。
abstract class Dog{
private String price;
public abstract void goFast();//抽象方法
}
抽象方法:
是一种没有任何实现的方法,具体实现由子类提供。
抽象方法不能被声明为final和static。
任何继承抽象类的子类必须实现父类的所有抽象方法,除非它也是抽象类。
抽象方法的声明以分号结尾。
public abstract class Dog{
abstract void m(); //抽象方法
}
class MyDog extends Dog{
//实现抽象方法
void m(){
...
}
}
4. synchronized:该关键字声明的方法同一时间只能被一个线程访问
5. transient:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。
6. volatile:volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个 volatile 对象引用可能是 null。