java中的修饰符
java中的修饰符主要分为两种访问修饰符和非访问修饰符,下面就是具体的介绍啦,balalallala
一、访问修饰符
1.default:无修饰符,可以使用的范围(对象,类,接口,变量,方法)
2.private:在同一类内可见,使用范围对象,变量,方法(不能修饰类)
类和接口不可被声明为private,只能被所属类访问,类中公共的gette,setterr方法被外部类访问
idea中创建getter的快捷方法:鼠标右键---》找到Generate就可以啦啦
3.public:对所有类可见,使用范围对象,类,接口,变量方法
4.protected:对同一包内的类和所有子类可见,使用范围:对象,变量,方法(不能修饰类)
这个相当复杂了呢
4.1子类与基类在同一包中:
被声明为protected的变量,方法和构造器能被同一个包中的任何其他类引用
4.2子类与基类不在同一包中:
那么在子类中,子类可以访问从基类集成而来的protected方法,而不能访问基类实例的 protected方法
4.3接口及接口的成员变量和成员方法不能声明为protected
4.4子类能访问protected修饰符声明的方法和变量,保护不相关的类使用这些变量和方法
注:默认访问修饰符:不适用任何关键字,默认使用。如:接口里的变量隐式声明:public static final ,接口里的方法默认为:public
二、非访问修饰符
1.static修饰符:用于修饰方法和变量
1.1静态变量:static关键字用来声明独立于对象的静态变量 (局部变量不能被声明为static变量)
1.2静态方法:static关键字用来声明独立于对象的静态方法,方法中不可使用类的非静态变量
2.final修饰符:修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量不可修改。
2.1final变量一旦被赋值后,不能被重新赋值
2.2final修饰符通常和static修饰符一起使用来创建变量
2.3final方法可以被子类继承,但不能被子类修改,声明方法为final,主要防止该方法被修改
2.4final类不能被继承
3.abstract修饰符:创建抽象类和抽象方法
3.1抽象类不能用来实例化对象,声明抽象类的唯一目的就是为了将来对该类进行补充
3.2一个类不能同时被abstract和final修饰
3.3一个类存在抽象方法,那么类一定要声明为抽象类
3.4抽象类可以包含非抽象方法
3.5抽象方法没有任何的事项方法,该方法具体实现由子类提供
3.6抽象方法不能被声明成final和static
3.7任何继承抽象类的子类必须实现父类所有的抽象方法
4.synchronize和volatile修饰符:线程的编程
4.1synchrinize修饰符:声明的方法同一时间只能被一个线程访问,可以应用于四个访问修饰符
4.2transient修饰符(阻止变量被序列化):序列化的对象包含被transient修饰的实体变量时,java虚拟机跳过该特定的变量
4.3volatile修饰成员变量:不可用在final前被线程访问时,强制以共享内存中重新读取该成员变量的值,成员变量发生变化时值会重新读写到内存中(共享内存,两个不同的线程总是看到某个成员变量的同一个值)