Java成员变量的访问权限

1.Java中成员变量的访问权限有四种

public : 允许所有类可以访问

protected :允许它的子类和同一包下的类进行访问

private :只允许在本类中访问

default :不加任何修饰权限的就默认为default,这个权限和protected很像,即仅允许本包下的类进行访问,

与Protected不同的是,protected允许子类访问,而defalut如果子类不在同一包下,也不允许访问。


2.就上面的几种权限,举几个简单例子介绍下

public

package A;
public class A
{
    public int temp=0;//定义一个public 变量
}


package A;
public class B()
{
     A  a=new A();
     a.temp=1;//可以访问
}


package B;
public class C
{
    A a =new A();
   a.temp=1;//可以访问
}

//子类也一样,任何包,任何类都可以进行访问



protected 

</pre><pre name="code" class="java">package A;
public class A
{
    public int temp=0;//定义一个public 变量
}


package A;
public class B()
{
     A  a=new A();
     a.temp=1;//可以访问
}


package B;
public class C
{
    A a =new A();
   a.temp=1;//不可以访问
}

package B;
public D extends A;
{
     void Change()
	{
	 temp=1;//可以访问
	}
}

//子类可以访问,本包类都可以进行访问

private 

package A;
public class A
{
    public int temp=0;//定义一个public 变量
}


package A;
public class B()
{
     A  a=new A();
     a.temp=1;//不可以访问
}


package B;
public class C
{
    A a =new A();
   a.temp=1;//不可以访问
}

//子类也不可以,只有本类才可以进行直接访问


default 

package A;
public class A
{
    public int temp=0;//定义一个public 变量
}


package A;
public class B()
{
     A  a=new A();
     a.temp=1;//可以访问
}


package B;
public class C
{
    A a =new A();
   a.temp=1;//不可以访问
}

package B;
public D extends A;
{
     void Change()
	{
	 temp=1;//不可以访问
	}
}

package A;
public E extends A;
{
     void Change()
	{
	 temp=1;//可以访问
	}
}
//只允许本包内访问,即使是子类也只能在包内才能访问,否则也无法访问(这点与protected不同)




3.当然,以上的不能访问都为不能直接访问

我们也可以通过在类中提供适当的public 方法去给其他类调用而间接的访问private成员

例如

package A ;
public class A
{
    private int temp;
    public void setTemp(int temp)
    {
         this.temp=temp;
     }
}

package B;
public class B  
{
    A a=new A();
    a.setTemp(1);//可以访问
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值