做个俗人贪财好色∮ 2023-12-13 17:38 采纳率: 100%
浏览 4
已结题

java的private问题

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());
        










}
}

```

  • 写回答

3条回答 默认 最新

  • Bianca1 2023-12-13 17:47
    关注

    但是你构造方法是public呀, 你是通过构造方法进行赋值,本质上还是在同一个类中进行的赋值。(构造方法是为了初始化对象的初始状态而设计的,它允许在同一个类中直接对所有成员进行赋值,包括private修饰的成员。)
    private关键字限制了在类的外部直接访问和修改成员的权限,但在同一个类内的方法(包括构造方法)中,仍然可以直接访问和修改private成员。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月13日