Java中的访问器/ Mutators与构造函数

时间:2014-04-15 02:43:30

标签: java java-ee

以下两种方法之间有什么区别?

条件1:

         String abs ="newpage";
         classA oa=new classA(abs);      

条件2:

         String abs ="newpage";

         classA oa=new classA();
         oa.setMystats(abs);      

3 个答案:

答案 0 :(得分:3)

不同之处在于,在一种情况下,您将参数传递给构造函数,而在另一个类中,您调用的是无参数构造函数,然后将参数传递给方法。

所以,第一种情况会像classA这样:

class classA {
   String value;

   classA(String value) {
      this.value = value;
   }
}

......第二个是这样的:

class classA {
   String value;

   void getMystats(String value) {
      this.value = value;
   }
}

哪个更合适取决于您要为该参数赋予的含义。简而言之,如果您的类的实例在没有该值的情况下不能存在,则应该在构造函数中设置它。如果在创建对象后可以自由更改该值,则需要一种方法来设置它。

答案 1 :(得分:0)

     classA oa=new classA(abs);      

调用classA的构造函数,该构造函数接受String参数。

     oa.getMystats(abs);      

调用带有String参数的classA的getMystats方法。

详细了解如何将参数传递给构造函数和方法:http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

答案 2 :(得分:0)

在条件1中 您只是将参数传递给构造函数。 因此,您可能会将此值保存在内部变量中。 例如:

String myString;
classA(String x){
myString=x;
}

在条件2中: 您正在将参数传递给类中的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();
}