gpt4 book ai didi

java - 为什么要在类中声明变量私有(private)?

转载 作者:搜寻专家 更新时间:2023-10-30 20:55:00 31 4
gpt4 key购买 nike

<分区>

伙计们,我首先要道歉,因为我确信这个问题已经在其他地方得到了回答——我只是找不到一个可以以我理解的方式解释它的答案!我正在学习 MSc 转换类(class),有一些基本的基础知识我仍在为此苦苦挣扎,包括这个 - 为什么将变量设为私有(private)更好。

假设我有一个名为 Person 的 Java 类,它有一个打印方法。我可以这样创建和定义它:

public class Person
{
public String name;
public String telephoneNumber;

public void print()
{
System.out.println(name + " " + telephoneNumber);
}
}

然后,在主类中,我可以编写以下代码:

class testPerson
{
public static void main(String[] args)
{
Person test;
test = new Person();

test.name = "Mary";
test.telephoneNumber = "01234 567890";

test.print();
}
}

如果我这样做,test.print();将产生输出:

mary 01234 567890

但是,我知道这被认为是糟糕的编码。变量在公共(public)类中应该是私有(private)的,因为我们不想让人们看到这些信息是如何存储的或能够在未经授权的情况下编辑信息。

现在,我将编辑 Person 类以将两个字符串声明为私有(private)并添加 get 和 set 方法,如下所示:

private String name;
private String telephoneNumber;

public void setName (String name)
{
this.name = name;
}

public void getName()
{
return name;
}

// same code for telephone methods.

现在,在主类中,我会将设置姓名和电话的方法更改为以下内容:

mary.setName("Mary");
mary.settelephoneNumber("01234 567890");

根据我正在关注的讲义,这更有效(尽管可以通过添加 Person() 方法以允许实例化等来提高效率)

但是,我很难理解为什么这样更好。
在以前的方法中,用户可以直接访问变量。但是,即使通过隐藏变量,他们无法直接访问它们,用户也可以间接访问和修改它们,从而产生完全相同的结果。

为什么这是首选,我错过/忽略了什么无疑是愚蠢的事情?

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com