java - 使用方法来操作数据

标签 java methods

<分区>

我有一个名为 Student 的类(class),这是代码:-

public class Student {
    public String name;
}

然后从另一个类(class),我访问了这个名字。

public class Example {
    public static void main(String[] args) {
        Student s = new Student();
        s.name = "David";
        System.out.println(s.name);
    }
}

但是我在许多书中听到和看到许多代码,他们说要将变量设为私有(private)并使用方法来访问它们,例如:-

public class Student {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

还有,

public class Example {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("David");
        System.out.println(s.getName());
    }
}

我想知道为什么以及它们之间的区别是什么。为什么使用方法来操纵状态被认为更健康?

最佳答案

默认情况下让您的类字段公开不是一个好习惯。任何人都可以访问公共(public)字段。因此,您无法确保您设置一次的值与您要获得的值相同。

您可以通过多种方式为实例的字段赋值。一种是通过构造方法:

public class Student {
    private String name;

    public Student(String name){
        this.name = name;
    }

    public void getName(String name) {
        return name;
    }
}

请注意,您需要一个 getter 方法 (getName) 来访问您的私有(private)字段。

正如您提到的,另一种方法是使用 setter 和 getter,但这面临着我们试图避免使用私有(private)字段的相同问题。

关于java - 使用方法来操作数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966835/

相关文章:

java - Java 中的递归方法提供不正确的输出

java - 如何在另一种方法中使用一种方法的变量?

python - 如何区分类、函数和方法

.net - 如何在 VB.NET 中为静态类编写方法扩展?

java - 在java中使用while循环进行字符检查(BufferedReader)

java - 多个错误代码配置 web.xml

java - 是否可以在 beanRef 的方法中检索 activeMQ 主题

java - getname() 和 addmemberlist() 的问题

java - 验证 AndroidManifest.xml 文件

java - Spring 3 依赖注入(inject)