访问权限定义:
1、访问权限指:对象是否可以通过 “ . ” 运算符操作自己的变量 或 通过 “ . ” 运算符调用类中的方法;
2、访问权限修饰符:private、public、protected;
3、private、public、protected 都是Java关键字,用于修饰 成员变量 或 方法 ;
Java访问权限之 private (私有的):
1、用 private 关键字修饰的 成员变量 和 方法 称为 私有变量 和 私有方法 ;
2、当类在同一个包中时,私有变量 和 私有方法 只能在自己类中调用,另外一个类中是不能调用的 ;
分别编写两个类:一个测试类 Visit_Power_Test ,一个 方法设计类 Visit_Power_Private ;
如下代码演示:
//测试类 Visit_Power_Test
public class Visit_Power_Test {
public static void main(String[] args) {
//创建对象
Visit_Power vp = new Visit_Power();
vp.variable = 11; //错误:The field Visit_Power.variable is not visible
vp.method(1,10);
//错误:The method method(int, int) from the type Visit_Power is not visible
}
}
//方法设计类 Visit_Power_Private
public class Visit_Power_Private {
//创建 private 成员变量 和 方法
private int variable;
private int method(int x,int y){
this.variable = x + y;
return this.variable;
}
}
在以上代码中,vp.variable = 11 ; 和 vp.method(1,10) ; 是错误的,因为在设计类中,他们都是 private 私有类型的;
测试类 调用 设计类 中的方法对 private 成员变量进行操作:
用以上两个类进行修改:一个测试类 Visit_Power_Test ,一个 方法设计类 Visit_Power_Private ;
如下代码演示:
//测试类 Visit_Power_Test
public class Visit_Power_Test {
public static void main(String[] args) {
//创建对象
Visit_Power vp = new Visit_Power();
vp.setmethod(1, 10);
System.out.println("private成员变量的值为:"+vp.getmethod());
}
}
//方法设计类 Visit_Power_Private
public class Visit_Power_Private {
//通过方法操作 private 成员变量
private int variable;
public void setmethod(int x,int y){
variable = x + y;
}
public int getmethod(){
return variable;
}
}
在以上代码中,设计类中的 setmethod 方法对 private 成员变量 variable 进行操作;
代码输出结果:
private成员变量的值为:11
需要注意的是:
在不同包中的类, private 类型的 成员变量 和 方法 是不可以调用的 ;
Java访问权限之 public (共有的):
1、用 public 关键字修饰的 成员变量 和 方法 称为 共有变量 和 共有方法 ;
2、当类在同一个包中时,共有变量 和 共有方法 不仅可以在自己类中调用,也可以在另外一个类中调用 ;
分别编写两个类:一个测试类 Visit_Power_Test ,一个 方法设计类 Visit_Power_Public ;
如下代码演示:
//测试类 Visit_Power_Test
public class Visit_Power_Test {
public static void main(String[] args) {
//在同一个包中,测试 public :创建对象
Visit_Power_Public vpp = new Visit_Power_Public();
vpp.variable = 11;
vpp.setmethod(11, 100);
System.out.println("public成员变量variable的值为:"+vpp.variable);
System.out.println("public成员变量cases的值为:"+vpp.getmethod());
}
}
//方法设计类 Visit_Power_Public
public class Visit_Power_Public {
//创建 public 成员变量 和 方法
public int variable,cases;
public void setmethod(int x,int y){
cases = x + y;
}
public int getmethod(){
return cases;
}
}
在以上代码中,设计类中的 成员变量 和 方法 都是 public 共有类型的,所以在 测试类 中可以直接调用;
代码输出结果:
public成员变量variable的值为:11
public成员变量cases的值为:111
需要注意的是:
当类不在同一个包中时, public类型的 成员变量 和 方法 也是可以调用的 ;
例如:
以上两个类中,分别将:测试类 Visit_Power_Test 和 方法设计类 Visit_Power_Public ;放在不同的两个包中:
测试类 Visit_Power_Test 在包 package Visit_Test_One;
方法设计类 Visit_Power_Public 在包 package Visit_Test_Two;
在 测试类 中也是可以对 方法设计类 中 成员变量和方法 进行调用的;
不过需要在测试类中通过 import 语句引入方法设计类:import Visit_Test_Two . Visit_Power_Public;
Java访问权限之 protected(受保护的) :
1、用 protected 关键字修饰的 成员变量 和 方法 称为 受保护的变量 和 受保护的方法 ;
2、当类在同一个包中时,受保护的变量 和 受保护的方法 不仅可以在自己类中调用,也可以在另外一个类中调用 ;
分别编写两个类:一个测试类 Visit_Power_Test ,一个 方法设计类 Visit_Power_Protected ;
如下代码演示:
//测试类 Visit_Power_Test
public class Visit_Power_Test {
public static void main(String[] args) {
//同一个包中,测试 protected :创建对象
Visit_Power_Protected vppd = new Visit_Power_Protected();
vppd.variable = 111;
vppd.setmethod(111, 1000);
System.out.println("public成员变量variable的值为:"+vppd.variable);
System.out.println("public成员变量cases的值为:"+vppd.getmethod());
}
}
//方法设计类 Visit_Power_Protected
public class Visit_Power_Protected {
//创建 Protected 成员变量 和 方法
protected int variable,cases;
protected void setmethod(int x,int y){
cases = x + y;
}
protected int getmethod(){
return cases;
}
}
在以上代码中,设计类中的 成员变量 和 方法 都是 protected 受保护类型的,所以在 测试类 中可以直接调用;
代码输出结果:
public成员变量variable的值为:111
public成员变量cases的值为:1111
需要注意的是:
当类不在同一个包中时, protected类型的 成员变量 和 方法 是可以调用的 ;
例如:
以上两个类中,分别将:测试类 Visit_Power_Test 和 方法设计类 Visit_Power_Protected ;放在不同的两个包中;
则程序报错:The field Visit_Power_Protected.variable is not visible
Java访问权限之 友好的 (默认权限):
1、不用 private、public、protected 关键字修饰的 成员变量 和 方法 称为 友好变量 和 友好方法 ;
2、当类在同一个包中时,友好变量 和 友好方法 不仅可以在自己类中调用,也可以在另外一个类中调用 ;
分别编写两个类:一个测试类 Visit_Power_Test ,一个 方法设计类 Visit_Power_Friendly;
如下代码演示:
//测试类 Visit_Power_Test
public class Visit_Power_Test {
public static void main(String[] args) {
//同一个包中,测试 protected :创建对象
Visit_Power_Protected vppd = new Visit_Power_Protected();
vppd.variable = 111;
vppd.setmethod(111, 1000);
System.out.println("public成员变量variable的值为:"+vppd.variable);
System.out.println("public成员变量cases的值为:"+vppd.getmethod());
}
}
//方法设计类 Visit_Power_Friendly
public class Visit_Power_Friendly {
//创建 友好的 成员变量 和 方法
int variable,cases;
void setmethod(int x, int y) {
cases = x + y;
}
int getmethod() {
return cases;
}
}
在以上代码中,设计类中的 成员变量 和 方法 都是 友好类型的,所以在 测试类 中可以直接调用;
代码输出结果:
public成员变量variable的值为:1111
public成员变量cases的值为:111111
需要注意的是:
当类不在同一个包中时, 好友 类型的 成员变量 和 方法 是不可以调用的 ;
例如:
以上两个类中,分别将:测试类 Visit_Power_Test 和 方法设计类 Visit_Power_Protected ;放在不同的两个包中;
则程序报错:The method setmethod(int, int) from the type Visit_Power_Friendlys is not visible
public类与友好类的区分:
1、类声明时,在 关键字 class 前面加上 public 关键字,则该类就是一个 public 类;否则为 友好类;
例如:
//public类
public class TestPublic(){
.....
}
//友好类
class Test(){
.....
}
需要注意的是:
1、当某个类中使用友好类创建对象时,要保证他们在同一个包中;
2、不能使用 private、protected 关键字修饰类 ;
3、访问权限修饰符按访问权限从高到低的排序是:public、protected、友好的、private ;