修饰符的使用及注意事项

1.修饰符分类

访问控制修饰符:public(公有)、protected(受保护的)、什么都不写(默认)、private(私有的)

非访问修饰符:static(静态)、final(最公有终)、abstract(抽象)、synchronized 和 volatile(线程上的应用)。

2.访问控制修饰符

在这里插入图片描述

2.1简介


作用:控制访问权限。

4种 :public(公有)、protected(受保护的)、什么都不写(默认)、private(私有的)(从前到后访问由宽松到严格)

public:可修饰:类、接口、变量、方法。所有类可访问public修饰的
protected:对同一个包内的类以及子类可见,使用对象:变量、方法(不能修饰外部类
default:(默认,什么都不写)同一个包内可见,使用对象:类、方法、接口、变量
private:仅同一个类内可见,使用对象:变量、方法。(不能修饰外部类

2.2public-公有的


----声明为public的类、方法、接口、变量能够被任何其他类访问。

----如果访问的的public的方法或变量不在同一个包中,需要将被访问的public的包,导到访问的包中。(导包

----由于类的继承性,类的所有方法和子类都能被子类继承

2.3protected-受保护的


----修饰变量和方法,不能修饰类(内部类除外)

----接口以及接口的成员变量和成员方法不能声明为protected。

----protected修饰的只能被同一个包或者子类所见。

----在同一个包中,能被随意访问。

----不在同一个包中:需要子类来继承由protected修饰的父类,进行方法和变量的访问。不能访问父类已经实例的protected方法;

2.4什么都不写-默认


----默认修饰符能修饰:变量和方法。

----对同一个包内的类是可见的。

----在接口里默认:变量的前缀为:public static final(常量)。方法的前缀为:public

2.5private-私有的


----private修饰的只能被当前类所访问。

----能修饰:变量、方法、构造方法;

----类(内部类除外)和接口不能被private修饰

----声明为private的变量,只能通过getter和setter方法被外部类访问。

3.非访问修饰符

分类
static静态修饰符:用来修饰类方法和类变量(类方法就是用类名来调用)

final修饰符:用来修饰类、方法和变量。final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract抽象修饰符:用来定义抽象类和方法。

synchronizedvolatile 修饰符,主要用于线程的编程。

3.1static-静态的


----静态变量:被static声明的变量,独立于对象,即不管实例化(创建)多少对象,静态变量只调用一次。局部变量不能被static声明

----静态方法:被static声明的方法,独立与对象,静态方法不能使用类的非静态变量,静态方法根据参数列表进行计算。

3.2final-最终的


变量
-final修饰的实例变量必须指定初始值。
-被final修饰的变量不能二次赋值,
-通常和static一起使用,定义常量。

方法
-不能修饰构造方法
-父类中final方法能被继承,但不能被子类重写。


-final类不能被继承。

参数:-
当参数被定义为final类型时,能读取使用,但不能改变该参数的值

3.3abstract-抽象的


抽象类
-抽象类不能实例化对象
-抽象类能更好地扩充
-abstract和final不能同时修饰一个类
-类里面有抽象方法,该类也必须声明为抽象类。

抽象方法
-抽象方法不能被static和final修饰
-继承抽象类的子类必须实现抽象类的所有抽象方法。除非该子类也是抽象类
-抽象方法没有实现方式,具体的实现由子类提供。

3.4synchronized


控制线程的访问:被synchronize修饰的类同一时间只能被一个线程所访问。与四种访问修饰符共同使用。

3.5transient


用来修饰变量,实例化对象时,若被transient修饰表示该变量不是对象的持久化数据。用来预处理类和变量的数据类型。

3.6volatile


用来修饰成员变量。
被volatile修饰的成员变量,在被线程访问时都要重新读取数值。如果数值在线程中发生变化,数值也会被返回到成员变量。用来保证不同线程的同一个成员变量的值总是相同的。

猜你喜欢

转载自blog.csdn.net/apple_51491580/article/details/112694590