刚才看张孝祥的视频教程,说设立了2个方法,setAge和getAge,实现了封装,这样能让其他类访问age这个变量,能限制对属性的不合理操作,但是我在TestPlayer这个类中试验了下,打出来的结果还是"my age is -30",并没有返回啊,请帮忙解答下,要怎么改才能让setAge直接返回age<0的那些值呢?
class Player
{         private  int age;
  void shout()
  {   
     System.out.println("my age is "+age);
  }
  public void setAge(int x)
  {     if (age <0)
           return;   
       age=x;
  }
  public int getAge()
  {
     return age;
  }
  public static void main(String [] args)
  {  
     Player p1 = new Player();
     Player p2 = new Player();    
     p1.age  = -20;
     p1.shout(); 
     p2.shout();
  }
}
class TestPlayer
{
public static void main(String [] args)
  {  
     Player p1 = new Player();
     Player p2 = new Player();    
     p1.setAge(-30);
     p1.shout(); 
     p2.shout();
  }
}

解决方案 »

  1.   

    明显的: public void setAge(int x) {
    if (x < 0)//这个判断,要判断输入的x是否小于0.如果age的话,默认值是0,所以不会成立,也就不会返回了
    return;
    age = x;
    }
      

  2.   


    public void setAge(int x) 
      {    if (age <0) //这里你怎么还是写成age啊,是x,应该是你的笔误吧
            //你这里的age是成员变量age,你还没赋值呢,初始是0,0<0当然不成立了,当然不会return了。如果你这理解就难办了
              return;   
          age=x; 
      }