访问修饰符 private(私有的)、protected(受保护的)和public(公共的)

访问修饰符
Java中定义了private(私有的)、protected(受保护的)和public(公共的)的访问修饰符,同时也定义了一个缺省的访问级别,用于声明类、属性、方法的访问权限。
使用public访问修饰符,类的成员可被同一包或不同包中的所有类访问,也就是说,public访问修饰符可以使类的特性公用于任何类;
使用protected访问修饰符允许类本身、同一包中的所有类和不同包中的子类访问;
如果一个类或类的成员前没有任何访问修饰符时,它们获得缺省的访问权限,缺省的可以被同一包中的其他类访问;
private访问修饰符是限制性最大的一种访问修饰符,被声明为private的成员只能被此类中的其他成员访问,不能在类外看到。

例如:
首先,定义MyClass1类结构:
public class MyClass1 {
public int a = 5;
private int b = 10;
protected int c = 20;
int d = 30;
public void func1() {
System.out.println(“func1”);
}
private void func2() {
System.out.println(“func2”);
System.out.println(b);
}
protected void func3() {
System.out.println(“func3”);
}
void func4() {
System.out.println(“func4”);
}
}

然后,定义MyClass2类结构:
class MyClass2 {
public void func1() {
System.out.println(“func1 of MyClass2”);
}
}

最后,定义Test类,假如将Test类放在与MyClass1和MyClass2同一个包p1下,在Test中访问MyClass1、MyClass2及其成员的可行性如下 :
public class Test {
public void func() {
MyClass1 obj1 = new MyClass1();
System.out.println(obj1.a); // 公共属性,任何地方都可以访问
System.out.println(obj1.b); // Error,私有属性类外无法访问
System.out.println(obj1.c); // 受保护属性同包的类或子类可以访问
System.out.println(obj1.d); // 缺省属性同包的类可以访问
obj1.func1(); // 公共方法,任何地方都可以访问
obj1.func2(); // Error,私有方法类外无法访问
obj1.func3(); // 受保护方法同包的类或子类可以访问
obj1.func4(); // 缺省方法同包的类可以访问
MyClass2 obj2 = new MyClass2(); // 同一包中的缺省类可以访问
}
}

假如将Test类放在与MyClass1和MyClass2不同的包下,在Test中访问MyClass1、MyClass2及其成员的可行性如下 :
public class Test {
public void func() {
MyClass1 obj1 = new MyClass1();
System.out.println(obj1.a); // 公共属性,任何地方都可以访问
System.out.println(obj1.b); // Error,私有属性类外无法访问
System.out.println(obj1.c); // Error,受保护属性同包的类或子类才可以访问
System.out.println(obj1.d); // Error,缺省属性同包的类才可以访问
obj1.func1(); // 公共方法,任何地方都可以访问
obj1.func2(); // Error,私有方法类外无法访问
obj1.func3(); // Error,受保护方法同包的类或子类才可以访问
obj1.func4(); // Error,缺省方法同包的类才可以访问
MyClass2 obj2 = new MyClass2(); // 缺省访问级别同包才可以访问
}
}
假如Test类继承了MyClass1,并且不在同一个包下,在Test中访问MyClass1、MyClass2及其成员的可行性如下 :
public class Test extends MyClass1{
public void func() {
System.out.println(a); // 公共属性,任何地方都可以访问
System.out.println(b); // Error,私有属性类外无法访问
System.out.println©; // 受保护属性同包的类或子类可以访问
System.out.println(d); // Error,缺省属性同包的类才可以访问
func1(); // 公共方法,任何地方都可以访问
func2(); // Error,私有方法类外无法访问
func3(); // 受保护方法同包的类或子类可以访问
func4(); // Error,缺省方法同包的类才可以访问
MyClass2 obj2 = new MyClass2(); // 缺省访问级别同包才可以访问
}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值