java的4种权限修饰符
文章内容选自尚硅谷,采用eclipse环境
权限修饰符的介绍
如图所示,4种权限修饰符的使用范围为
- 对于类的权限修饰符只能用缺省和public
- 4种权限修饰符都可以修饰类的属性、方法、构造器、内部类。
在同一个包下测试代码
代码如下,先在一个包com.atguigu.java内定义一个Order的类
package com.atguigu.java;
public class Order {
private int orderPrivate;
int orderDefault;
public int orderPublic;
private void methodPrivate(){
orderPrivate = 1;
orderDefault = 2;
orderPublic = 3;
}
void methodDefault(){
orderPrivate = 1;
orderDefault = 2;
orderPublic = 3;
}
public void methodPublic(){
orderPrivate = 1;
orderDefault = 2;
orderPublic = 3;
}
}
再在同一个包内定义一个OrderTest的类
package com.atguigu.java;
public class OrderTest {
public static void main(String[] args) {
Order test = new Order();
test.methodDefault();
test.methodPublic();
// test.methodPrivate();
// test.orderPrivate = 1;
test.orderPublic = 3;
test.orderDefault =2;
}
}
注释掉的代码就是编译器报错的部分,可见私有方法和私有属性的适用范围只能在类的内部。
在不同的包下测试代码
新建了一个com.atguigu.java1的包,在不同的包下,仍然可以建立同名的java文件,这儿再次创建一个OrderTest的类。
代码如下
package com.atguigu.java1;
import com.atguigu.java.Order;
public class OrderTest {
public static void main(String[] args) {
Order test = new Order();
// test.orderPrivate = 1;
// test.orderDefault =2;
test.orderPublic =3;
// test.methodPrivate();
// test.methodDefault();
test.methodPublic();
}
}
注释掉的部分为编译器报错的部分,可见,这一次不能使用Default定义的方法和属性了,因为Default的适用范围仅在一个包内部。
类的权限修饰符
类的权限修饰符只能是public或者缺省,如果在com.atguigu.java内定义的类Order的权限修饰符改为缺省的话,则不能在com.atguigu.java1的包内new一个Order对象,因为缺省Default的适用范围仅限于包内,不能在另一个包内使用。