java入门(五)_权限

 

类:public class可以被外包访问;class只能在本包中访问

 文件Mymath.java

package b;

public class Mymath {

}

 文件Pack.java

package a;
import b.*;

public class Pack {
	public static void main(String args[]) {
		Mymath m = new Mymath();
	}
}

执行 javac Pack.java就不会报错,如果把Mymath.java文件中的public去掉就会报错
生成文件和源文件存放结构如下:
├── b
│   └── Mymath.class
├── Mymath.java
├── Mymath.java.bak
├── Pack.class
├── Pack.java
└── Pack.java.bak

如果想把Mymath.java文件中的public去掉也不会报错,需要修改Mymath.java、Pack.java,修改后的结果如下:

 文件Mymath.java

package a;

 class Mymath {

}

文件Pack.java

package a;
//import b.*;

public class Pack {
	public static void main(String args[]) {
		Mymath m = new Mymath();
	}
}

生成文件和源文件存放结构如下:
├── a
│   └── Mymath.class
├── Mymath.java
├── Mymath.java.bak
├── Pack.class
├── Pack.java
└── Pack.java.bak

根据上面的测试结果可以知道Java存在权限控制, Java 中一共有四种访问权限控制,其权限控制的大小情况是这样的:public > protected > default(包访问权限) > private ,具体的权限控制看下面表格,列所指定的类是否有权限允许访问行的权限控制下的内容:

  • public: 所修饰的类、变量、方法,在内外包均具有访问权限;
  • protected: 这种权限是为继承而设计的,protected所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问;
  • 包访问权限(default): 只对同包的类具有访问的权限,外包的所有类都不能访问;
  • private: 私有的权限,只对本类的方法可以使用; 

 private:

/* file: Mymath.java */
package a;

public class Mymath {
	private int x;

}
/* file: Pack.java */
package a;
//import b.*;

public class Pack {
	public static void main(String args[]) {
		Mymath m = new Mymath();
		m.x = 0;
	}
}

编译运行:
javac -d . Mymath.java
javac -d . Pack.java
报下面错误信息:
Pack.java:8: error: x has private access in Mymath
                m.x = 0;
                 ^
1 error

 default:

把Mymath.java文件修改为下面内容编译就不会报错误信息   

/* file: Mymath.java */
package a;

public class Mymath {
	int x;
}

 但是放在不同的包里面就会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值