我的一个朋友刚刚提到我应该用吸气剂上课,这被认为是好的做法吗?我无法在其他地方找到答案。
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说重复的问题 这不是需要保密的简单变量。 这是关于为课堂增加一个吸气剂的习惯,因为课程已经公开,所以我不会这样做。
答案 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类