[英]Accessors/Mutators vs. Constructors in Java
以下两种方法有什么区别?
条件1:
String abs ="newpage";
classA oa=new classA(abs);
条件2:
String abs ="newpage";
classA oa=new classA();
oa.setMystats(abs);
区别在于,在一种情况下,您将参数传递给构造函数,而在另一类中,您在调用无参数构造函数,然后将参数传递给方法。
因此,第一种情况将具有如下所示的classA
:
class classA {
String value;
classA(String value) {
this.value = value;
}
}
...,第二个是这样的:
class classA {
String value;
void getMystats(String value) {
this.value = value;
}
}
哪个更合适取决于您要赋予该参数什么含义。 松散地说,如果没有该值就无法存在您的类的实例,则应在构造函数中对其进行设置。 如果在创建对象之后可以自由更改该值,则需要一种方法来对其进行设置。
classA oa=new classA(abs);
调用带有String参数的classA的构造函数。
oa.getMystats(abs);
调用带有String参数的classA的getMystats方法。
了解有关将参数传递给构造函数和方法的更多信息: http : //docs.oracle.com/javase/tutorial/java/javaOO/arguments.html
在condition1中,您只是将参数传递给构造函数。 因此,您可能会将此值保存在内部变量中。 例:
String myString;
classA(String x){
myString=x;
}
在condition2中:您正在将参数传递给类中的Method,您可能需要对参数做一些事情。 否则,您将无法通过。
String myString;
classA(String x){
myString=x;
}
/**
Returns the number of time that x is myStirng.
*/
int getMystats(Stirng x){
return myString.split(x).length();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.