java-访问修饰符的区别
Posted 心香
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-访问修饰符的区别相关的知识,希望对你有一定的参考价值。
说明:所谓访问权限,是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法。
1、Java中的四种访问修饰符:public、protected、default(无修饰符,默认)、private。
2、四种修饰符可修饰的成分(类、方法、成员变量)
|
public |
protected |
default |
private |
类 |
√ |
× |
√ |
×(内部类可以用private修饰) |
方法 |
√ |
√ |
√ |
√ |
成员变量 |
√ |
√ |
√ |
√ |
3、四种修饰符的访问权限
public:对所有类可见
protected:对同一包中的类可见、对同一包及不同包中的子类可见
default:对同一包中的类可见、对同一包中的子类可见
private:仅对类本身可见
可见是可访问的意思,即由这些修饰符修饰的成分(类、方法、成员变量)可以被其它类访问。对子类可见即子类可以继承。
这里需要注意的是protected与default,二者的区别在于不同包中的子类是否可以继承。
访问权限 |
类 |
同一包 |
同一包中的子类 |
不同包中的子类 |
不同包 |
public |
√ |
√ |
√ |
√ |
√ |
protected |
√ |
√ |
√ |
√ |
× |
default |
√ |
√ |
√ |
× |
× |
private |
√ |
× |
× |
× |
× |
注:
- 修饰符修饰变量或方法时:
- 一个类中的实例方法总是可以操作该类中的实例变量和类变量;类方法总是可以操作该类中的类变量,与访问权限没有关系。
- private:如果Tom类中的某个成员是私有类变量(静态成员变量),那么在另外一个类中也不能通过类名Tom来操作这个私有类变量。如果Tom类中的某个方法是私有的类方法,那么在另外一个类中,也不能通过类名Tom来调用这个私有的类方法。
- private:对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。
- public:当在任何一个类中用类Tom创建了一个对象后,该对象能访问自己的public变量和类中的public方法。
- default:当在另外一个类中用类Tom创建了一个对象后,如果这个类与Tom类在同一个包中,那么该对象能访问自己的友好变量和友好方法。
- default:在源文件中编写命名的类总是在同一个包中。如果源文件使用import语句引入了另外一个包中的类,并用该类创建了一个对象,那么该类的这个对象将不能访问自己的友好变量和友好方法。
- protected:当在另外一个类中用类Tom创建了一个对象后,如果这个类与类Tom在同一个包中,那么该对象能访问自己的protected变量和protected方法。
* 修饰符修饰类时:
* 可以在任何另外一个类中,使用public类创建对象。
* 如果一个类不加public修饰,这样的类被称为友好类,那么在另外一个类中使用友好类创建对象时,要保证它们在同一个包中。
部分引用:https://www.cnblogs.com/deltadeblog/p/7123661.html
以上是关于java-访问修饰符的区别的主要内容,如果未能解决你的问题,请参考以下文章