Java访问权限(public、protected、友好的、private)定义

访问权限定义:

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 ;

发布了57 篇原创文章 · 获赞 10 · 访问量 7546

猜你喜欢

转载自blog.csdn.net/LagerSwan/article/details/104168989