访问权限的问题(访问限制符)private,protected,public

时间:2022-09-22 09:51:19

写在前面:在面向对象编程中,最提倡的是通过调用方法来改变自己的属性,类应当提供操作数据的方法,这些方法需要编程人员进行精心设计。

首先声明,一个类中的实例变量总是可以操作该类中的实例变量和类变量,类变量只可以操作该类中的类变量,与访问限制符无关。

1、私有变量和私有方法private

如果类中的某个成员是私有变量,那么在另外一个类中,不能通过类名调用这个变量,方法也是一样。

对于私有变量和方法只有在本类中创建对象时,这个对象才可以访问私有成员变量和类中的方法。

class  AAA()

{

      public intmoney;

      private intgetMoney(){

             returnmoney;

      }

      publicstatic void main(String[] args)

      {

             AAAexa=new AAA();                   //对象exa在AAA类中有效

             exa.money=3000;             

             intm=exa.getMoney();

             System.out.println("money="+m);

      }

}

但是如果换成这样的就不行了

class  AAA()

{

      public intmoney;

      private intgetMoney(){

             returnmoney;

      }

}

class E

{

      publicstatic void main(String[] args)

      {

             AAAexa=new AAA();                   //对象exa在E类中,不在AAA类中,因此下面两个调用是非法的

             exa.money=3000;                   //调用非法

             intm=exa.getMoney();             //调用非法

             System.out.println("money="+m);

      }

}

在面向对象编程中,最提倡的是通过调用方法来改变自己的属性,类应当提供操作数据的方法,这些方法需要编程人员进行精心设计的,这就需要将变量名定义为私有的private。有时候可以直接通过类名对变量进行定义,但是最好还是利用方法。

2、共有变量和共有方法

利用public进行修饰,可以通过类名直接调用,

先创建对象,然后利用对象进行调用。

3、友好变量和友好方法,即不用private、public、protected修饰符的成员变量和方法。

     在同一个包里面的类可以通过类名访问类中的友好变量和友好方法,但是,如果利用import引入了另一个包中的类,并用该类创建了一个对象,那么该对象将不能访问自己的友好变量和友好方法。

4、受保护的成员变量和成员方法

    用protected修饰的成员变量和成员方法被称为受保护的成员变量和成员方法。基本用法和友好变量和友好方法一样,但是也有区别。