对于下面的代码,我正在尝试实现封装。
有一个疑问,我们是否已经将类的实例变量设为dog
作为私有(private),我们如何能够返回实例变量 name
在 getName
方法?根据我的理解,我们无法访问创建它的类之外的私有(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/