繁体   English   中英

Java中的访问器/可变器与构造器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM