java - 我们如何使用 getter 和 setter 访问私有(private)实例变量?

标签 java

对于下面的代码,我正在尝试实现封装。

有一个疑问,我们是否已经将类的实例变量设为dog作为私有(private),我们如何能够返回实例变量 namegetName方法?根据我的理解,我们无法访问创建它的类之外的私有(private)实例变量。

有人可以解释一下我们如何能够访问 name 的值吗?实例变量?

测试方法:

public class TestEncapsulationOld{

    public static void main (String [] args) {

    Dog d = new Dog();

    d.setAge(5);
    d.setName("tuffy");

    System.out.println (d.getName()+"'s age is "+d.getAge());   
    }
}

Dog :

class Dog {

    private int age;
    private String name;
    public void setName (String n) {
        name = n;   
    }

    public String getName() {
        return name;
    }

    public void setAge (int a) {

        if (a <= 0){
            System.out.println ("Invalid age!!");
        }

        else if (a>20){
            System.out.println ("A dog cant live that long");
        }

        else{
        age = a;
        }
    }

    public int getAge() {
        return age;
    }
}

最佳答案

name 字段是私有(private)的,意味着您不能在 Dog 类之外使用:

Dog d = new Dog();
System.out.println(d.name); // Won't compile as name is private.

但是,getName() 方法是公共(public)的,因此可以在任何地方使用。在 getName() 中,您可以访问 name 字段,因为它位于同一类中。 .

关于java - 我们如何使用 getter 和 setter 访问私有(private)实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651634/

相关文章:

java - 具有外部属性的 Spring Boot 配置文件

java - 我可以使用哪个免费 Java 库在 Java 中生成 PDF?

java - 为引用变量分配默认值

java - 处理 - 使物体在特定的时间帧内消失和出现

java - 使用 java 启动 derby 数据库服务器和客户端

java - Http PUT 请求到 jpeg

java - 如何在java中递归地在链表前面添加一个节点

java - GUI/应用程序通信

java - 创建包含单词的数组列表并将其与用户输入的消息进行比较

java - 后端服务器轮询其他 API 的 Web 应用程序的架构模式。