课程的Getters /(Setters)?

时间:2015-08-16 18:48:48

标签: java class setter getter

我的一个朋友刚刚提到我应该用吸气剂上课,这被认为是好的做法吗?我无法在其他地方找到答案。

Setters for class怎么样?那甚至存在吗?

感谢您的意见。

public class Movement {

        private Player p;

        public Movement(Player p) {
                this.player = p;
        }

        // methods

}


public class Player {

    /**
     * The movement class that handles all players movements
     */
    private Movement movement;

    public Player() {
        this.movement = new Movement(this);
    }

    public Movement getMovement() {
        return this.movement;
    }
}

@people说重复的问题 这不是需要保密的简单变量。 这是关于为课堂增加一个吸气剂的习惯,因为课程已经公开,所以我不会这样做。

3 个答案:

答案 0 :(得分:3)

  

Setters for class怎么样?那甚至存在吗?

AFAIK,不是Java。每当您想要修改类属性或行为时,分别更改其成员或方法(在某些情况下,通过“setter”方法,是),或者为类创建另一个构造函数以创建它的某个指定实例。 getters setters 的目的是提供封装概念,主要用于限制或配置对某些某些对象组件的访问(不是整个类实例本身)。 至于类,在Java中我们有访问修饰符,原因相同。

我的猜测是,您的朋友可能会谈论像 Singleton模式之类的内容,其中您实际上正在使用某种“getter”方法来访问类实例就像在here中一样:

public class Singleton {



  private static Singleton singleton = new Singleton( );

   /* A private Constructor prevents any other 
    * class from instantiating.
    */
   private Singleton(){ }

   /* Static 'instance' method */
   public static Singleton getInstance( ) { //That's what you are probably asking about
      return singleton;
   }
   /* Other methods protected by singleton-ness */
   protected static void demoMethod( ) {
      System.out.println("demoMethod for singleton"); 
   }
}

或者是this answer中以静态工厂模式为例。

摘要:尽管类本身是public,但是没有public构造函数可用,所以这就是提供某种的原因“吸气剂”。我想这就是你的情况。

答案 1 :(得分:0)

Getter和setter用于隐藏/保护私有/受保护变量 其他课程。例如:

Class Person{
 private String name;

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

答案 2 :(得分:0)

我发现设置成员变量与设置对象之间没有任何区别。您可以在设置成员变量时设置对象的值。

public void setPlayer(Player player){
    this.player = player;
}
public Player getPlayer(){
    return player;
}
public void setMovement(Movement movement){
    this.movement = movement;
}
public Movement getMovement(){
    return movement;
}
  

如果您不想显式设置对象值,可以在构造函数中设置值,并仅向调用者提供getter方法,这样除了通过调用构造函数之外,其他任何人都无法设置该值。即使您不想调用构造函数来设置值,也可以通过将构造函数设置为私有来创建Singleton类。我希望你知道如何创建Singleton类