Java中存取权限和修饰符public、private、protected和default的区别和联系

java中有4种存取权限和对应的修饰符(从限制最少的开始列出),主要做用以下:java

1.public
权限最大,表明任何程序代码均可以存取的公开事物(类、变量、方法、构造函数等)。它每每用于对外的状况,也就是对象或类对外的一种接口的形式。看一下例子:数据库

package com.ab.test;函数

public class Public {
public int a = 20;
public void hello(){
System.out.println("Hello World!");
}设计

}
咱们先在一个包中定义一个public的类、变量、方法,而后咱们再定义一个在不一样包中来引用这个类、变量、方法:
package com.ab.main;excel

import com.ab.test.*;对象

public class Main {blog

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a;
Public pub = new Public();
a = pub.a;
System.out.println("Main a is: " + a);
pub.hello();
}继承

}接口

咱们能够经过import com.ab.test.*;的方式就能够很方便无限制的调用类Public了,这种方式也是咱们平时使用的比较多的形式,咱们能够把通用的类放到一个包中,好比像处理数据库,
发送邮件或者存取excel等基础通用的需求,而后后续在不少地方反复调用,这也是代码重用,可以极大提升效率。
2.protected图片

受保护的部分运行起来像是default,但也能容许不在相同包中的子类继承受保护的部分,主要做用是保护子类的。

3.default

只有在同一包中的默认事物可以存取,也称为friendly,它是针对本包访问而设计的,声明时没有加修饰符,认为是friendly

4.private

只有同一类中的程序代码才能存取,访问权限限于类的内部,是一种封装的体现。须要注意的是它是对类而不是对象设限,因此Dog能够看到别的Dog的私有部分,但Cat就不能看到Dog的私有部分。
借用一个网上搜到的图片,总结权限以下:

须要注意的点:

1.在java里,这些修饰符均可以修饰类中的成员变量和方法,可是只有public和友好型能够修饰类,也就是说只能有public和default的类,而不能有private和protected的类;

2.java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,经过反射的手段,是能够访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

相关文章
相关标签/搜索