java的private问题
不是说一个实例变量被private后只能通过get set 进行访问和修改吗,下面这个private的life,就被下面的构造方法直接改了,有点蒙,询问一下大老们.代码的实例和运行的主方法在下面.
这个是实例
public class shili
{
int money;
private int life;
int harm;
public shili(){}
public shili(int jinqian,int shengming,int shanghai){
money=jinqian;
life=shengming;
harm=shanghai;
}
public int getLife(){
return life;
}
public void setLife(int shengming){
if (shengming<0)
{System.out.println("生命值为负数,你将会直接死亡,系统不允许你如此修改");
System.out.println("非法字符,返回错误代码为'000000001'");
System.out.println("你输入了不合法的生命值生命值不会变更");
return;
}
life=shengming;
}
}
这个是主方法
```java
public class yuanma
{ public static void main(String[] args){
//java.util.Scanner s=new java.util.Scanner(System.in);//错误思想,无法修改.
shili attribute=new shili(1,1000,1);//在此处可以直接访问并修改private的值life................问题
System.out.println("你的金钱为"+attribute.money);
//System.out.println(attribute.life);
System.out.println("你的攻击值为"+attribute.harm);
System.out.println("正在访问你的生命值");
System.out.println(attribute.getLife());//此处直接返回life为1000...............................问题
//attribute.setLife.shengming()=s.nextInt();//错误思想,无法修改.
System.out.println("你输入了新的生命值生命值变更");
attribute.setLife(5000);
System.out.println("你的生命值为"+attribute.getLife());
System.out.println("你输入了新的生命值生命值变更");
attribute.setLife(-1);
System.out.println("你输入了新的生命值生命值变更");
System.out.println("你的生命值为"+attribute.getLife());
}
}
```