问题

我来自php世界。你能解释一下getter和setter是什么,可以给你一些例子吗?


#1 热门回答(116 赞)

这并非真正需要教程。阅读onencapsulation

private String myField; //"private" means access to this is restricted

public String getMyField()
{
     //include validation, logic, logging or whatever you like here
    return this.myField;
}
public void setMyField(String value)
{
     //include more logic
     this.myField = value;
}

#2 热门回答(36 赞)

在Java中,getter和setter是完全普通的函数。使他们成为吸气剂或制定者的唯一因素是惯例。 foo的getter被称为getFoo,setter被称为setFoo。在布尔值的情况下,getter被称为isFoo。它们还必须具有特定声明,如"name"的getter和setter示例所示:

class Dummy
{
    private String name;

    public Dummy() {}

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

    public String getName() {
        return this.name;
    }

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

使用getter和setter而不是让你的成员公开的原因是它可以在不改变界面的情况下改变实现。此外,许多使用反射来检查对象的工具和工具包只接受具有getter和setter的对象。例如,JavaBeans必须具有getter和setter以及其他一些要求。


#3 热门回答(12 赞)

class Clock {  
        String time;  

        void setTime (String t) {  
           time = t;  
        }  

        String getTime() {  
           return time;  
        }  
}  


class ClockTestDrive {  
   public static void main (String [] args) {  
   Clock c = new Clock;  

   c.setTime("12345")  
   String tod = c.getTime();  
   System.out.println(time: " + tod);  
 }
}

当你运行程序时,程序从主电源开始,

  • 创建对象c
  • 函数setTime()由对象c调用
  • 变量time设置为传递的值
  • 函数getTime()由对象c调用
  • 时间返回
  • 它将通过tod和tod打印出来

原文链接