Java基础——可见性修饰符

1. 简介

可见性修饰符可以用于确定一个类以及他的成员的可见性

2. public

可以在类、方法、数据源前使用public修饰符,表示他们可以被任何其他类访问。

3. protected

允许子类访问父类中的数据域或方法,但不允许非子类访问这些数据域和方法。

4. 默认修饰符

如果没有使用可见性修饰符,那么默认类、方法和数据域可以被同一个包中的任何一个类访问。这称为包私有(package-private)或包内访问(package-access)。

5. private

限定方法和数据域只能在自己的类中访问。注意修饰符private只能应用在类成员上,修饰符public可以应用在类或类成员上。在局部变量上使用public和private都会导致编译错误。
在大多数情况下构造方法都是公共的,但如果想防止用户创建类的实例,就使用私有构造方法,实例化时会提示构造方法不可视错误。例如Math类所有方法都是静态方法,所以为防止用户创建Math对象,其构造方法定义如下

private Math(){

}

6. 总结

类中成员修饰符同一类中可访问同一包中可访问在子类中可访问在不同包中可访问
public
protected-
(default)--
private---

数据和方法的可见性


下面的程序中展示了使用可见性修饰符之后,数据和方法的作用范围。子类可以扩大父类定义的作用范围,但是不能削弱父类的作用范围

 package p1;

 public class C1{
   public int x;
   protected int y;
   int z;
   private int u;

   protect void m(){

   }
 }


 public class C2{
   C1 o = new C1();
   can access o.x;
   //在同一个包中
   can access o.y;
   can access o.z;
   cannot access o.u;

   can invoke o.m();
 }


 public class C3 extends C1{
   can access x;
   can access y;
   can access z;
   cannot access u;

   can invoke m();
 }
package p2;

public class C4{
  C1 o = new C1();
  can access o.x;
  //没有继承也不在同一个包
  cannot access o.y;
  cannot access o.z;
  cannot access o.u;

  cannot invoke o.m();
}

public class C5 extends C1{
  can access x;
  can access y;
  //不在同一个包
  cannot access z;
  cannot access u;

  //继承父类
  can invoke m();
}
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值