黑马程序员技术交流社区

标题: 同一类中,p1的方法能否以p2.var的形式访问private成员变量? [打印本页]

作者: as604049322    时间: 2014-12-15 08:48
标题: 同一类中,p1的方法能否以p2.var的形式访问private成员变量?
编程试验:我们在一个类中定义了一个private类型的成员变量,接着产生了这个类的两个实例对象,请问第一个对象的方法中,能否以“第二个对象.成员”的格式访问第二个对象中的那个private成员变量?
这个问题我不是太理解,经过我的实验貌似是可以的。代码如下:
  1. class  Test
  2. {
  3.     public static void main(String[] args){
  4.         Chinese c1=new Chinese(1);
  5.         Chinese c2=new Chinese(2);
  6.         System.out.println(c1.getAge(c2));
  7.     }

  8. class Chinese
  9. {
  10.     static String country="中国";
  11.     private static int count=0;
  12.     String name;
  13.     private int age;
  14.     Chinese(int age) {
  15.         //System.out.println(++count);
  16.         this.age=age;
  17.     }
  18.     public int getAge(){
  19.         return age;
  20.     }
  21.     public int getAge(Chinese ch){
  22.         return ch.age;
  23.     }

  24.     public void finalize(){
  25.         count--;
  26.         System.out.println("删除了");
  27.     }
  28.     void singOurCountry()
  29.     {
  30.         System.out.println("啊!,亲爱的" + country);
  31.         //类中的成员方法也可以直接访问静态成员变量
  32.     }
  33. }
复制代码

编译通过,结果是2。


作者: Honelyboy    时间: 2014-12-15 21:37
同一个类中是可以访问的。
作者: 不给吃鸭梨    时间: 2014-12-15 22:05
小白一枚,按理说c1的实例通过重载的函数去访问c2中私有的成员变量,访问不到:o
作者: chudaming213    时间: 2014-12-15 22:22
你这是通过c2先访问c2的age,然后又将之传给了c1的方法。所以不算是直接访问的。你要整个int age=c2.getAge();这玩意儿整的主函数都直接访问c2中的私有成员了。你只看到了头和尾没有看到代码的过程。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2