java中的权限修饰符和修饰符

Java中有很多的权限修饰符和修饰符,往往我们在编程的时候,不能正确的使用这些修饰符,甚至有的人根本分不清权限修饰符和修饰符,以下是对修饰符和权限修饰符的一些总结!

首先,为什么要有权限修饰符?

答:因为在我们编写一个类,并且供人使用的时候,我们只需要满足一些必要的功能就可以了,而没有必要把类中的所有方法,成员都给他,这能保证一定的安全性,也体现了Java的封装性。

权限修饰符:

default:

类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。

默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用

(总结:只要是同一个包中,都可以被调用,范围是本包)


public:

public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符

(总结:那都能用,范围是本程序)


private:

private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。

(总结:在哪个类定义,就在哪个类使用,范围是本类)


protected:

protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类

(总结:范围比default大一点,能在不同的包中进行访问,只是另一个包中的类需要时该类的子类)



修饰符:

final:

 final的意思是不可变,他可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。

 

static:

static用来修饰内部类,方法,字段。修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。修饰字段说明该字段属于类而不属于类实例。修饰方法说明该方法属于类而不属于类实例。


abstract:

 abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。修饰方法后,该方法为抽象方法必须被子类重写(override)。


transient:

告诉编译器,在类对象序列化的时候,此变量不需要持久保存。


volatile:

指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理。

你可能感兴趣的:(java)