java小白关于私有变量的疑问

bitchqaq 2022-05-26 15:01:29

首先我知道私有变量是什么,也基本理解,但是今天遇到了一个不理解的问题。

在一个Student类里,有一个private的age成员,和一个public的testFunc方法。其中testFunc方法需要传进一个对象oj。我发现在这个testFunc方法里居然可以修改oj的private属性,很不理解。这样就相当于通过a对象修改了b对象的私有属性,似乎有违private的初衷?

见代码:

Student.java

public class Student {
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void testFunc(Object oj){
        var tmp = (Student) oj;
        tmp.age = 100000;
    }
}

StudentTest.java

public class StudentTest {
    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = new Student();
        s1.setAge(10);
        s2.setAge(10);

        s1.testFunc(s2);


        System.out.println("s2 age is:" + s2.getAge());
    }
}

这种场景很多,比如equals方法通常会传oj,那如果修改了oj,岂不是很危险?该怎样理解呢?

...全文
216 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧池仙子 2022-05-26
  • 打赏
  • 举报
回复

这个测试的结果如下:

s2 age is:100000

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧