小学生笔记:谈java中的包默认可见性,以及public,private,protect

当修饰符修饰类时:

  1. 在java中类只可被public修饰,或者被默认为包可见性(即不被修饰时),且java中类不可被private,protect修饰符修饰(这是与c++不同的)
    public修饰类时,说明该类可被任意类访问(实例化,继承,实现)
    当类不被修饰时,即自动默认为包可见时,意味着该类只能被处于同一个包中的类访问,处于其所属包中的子包中的类是不可以访问的它的。

当修饰符修饰类成员时

  1. public修饰类成员时,表明该成员可以通过该类的任意对象进行显示的调用

  2. private修饰类成员时,该成员只能被该类中的实例域,或者类方法调用,不可通过该类对象在外界(即非类定义区)进行显示的调用

  3. 当用protected修饰类成员时,该成员可被其所属类的子类以及与其所属类处于同一包中的其他类所访问

这里需要一个例子:

package javatesting;
public class A {
    public static void main(String[] args){
        A a=new A();
        System.out.println(a.a);
    }
      protected  int a=3;

}
package javatesting;

public class B {
    public static void main(String[] args){
        A a=new A();
        System.out.println("the B :"+a.a);//默认可见性,即同一包中如果一个类的类成员为默认可见性,则同处一个包中的其他类可显示的调用该类的类成员
    }

}
运行结果为: the B:3

要注意,一个class文件中只能有一个public类(可以有默认包可见性的类无数个),说明以上两个类是分别定义在同一个包中的两个class文件

4 当被默认修饰的类成员时(即该类成员没有使用任何修饰符时,被默认修饰),该成员只可被其所属类处于同一包中的其他类所访问,有点像阉割版的protected,好歹protected还可以被其所属子类的类成员调用,嗯,下面是例子:

package javatesting;

public class A {
    public static void main(String[] args){
        A a=new A();
        System.out.println(a.a);
    }
        int a=3;//此时的a没有被任何修饰符修饰

}
package javatesting;

public class B {
    public static void main(String[] args){
        A a=new A();
        System.out.println("the B :"+a.a);//此处的运行结果为 the B:3
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值