Java 中何时使用参数化方法与参数化构造函数
When to use Parameterized Method vs Parameterized Constructor in Java
我刚开始学习Java,从Java第九版Herber Schildt[第6章],
来到参数化方法和参数化构造函数这个主题
我了解如何声明它们以及它们如何工作,但是我对它们的用法感到困惑,何时使用参数化方法以及何时使用参数化构造函数?
请举个简单类比的例子
它们的主要区别在于 return 类型。构造函数没有 return 任何东西,甚至没有无效。当实例化 class 时,构造函数是 运行。另一方面,parameterized methods 用于类型安全,即允许不同的 classes 而无需转换。
public class Person {
String name ;
int id;
//Default constructor
Person(){
}
//Parameterized constructor
Person(String name, int id){
this.name = name;
this.id = id;
}
public static void main(String[] args) {
Person person = new Person("Jon Snow",1000); // class instantiation which set the instance variables name and id via the parameterised constructor
System.out.println(person.name); //Jon Snow
System.out.println(person.id); //1000
Person person1 = new Person(); //Calls the default constructor and instance variables are not set
System.out.println(person1.name); //null
System.out.println(person1.id); //0
}
}
首先你应该理解构造函数的实际含义。
您可以将 "Constructor" 视为每当您为 class 创建对象时都会调用的函数。在 class 中你可以有很多实例变量,即 class 的每个对象都有它自己的实例变量副本。因此,每当您使用 new ClassName (args)
语句创建一个新对象时,您都可以在构造函数中初始化该对象的实例变量的值,因为无论何时实例化一个对象,它都会首先被调用。请记住,创建对象时只会调用一次构造函数。
此外还有两种类型的方法实例和静态方法。两种类型都可以接受参数。如果您使用的是静态参数化方法,那么您不能在 class 的对象上调用该方法,因为它们可以对 class 的静态变量进行操作。
实例参数化方法可以使用 class 的实例和静态成员,它们在对象上调用。它们代表一种对您调用方法的对象执行特定操作的机制。在这些方法(静态和实例)中传递的参数可以作为您要完成的操作的输入。
与对象实例化时只调用一次的构造函数不同,您可以根据需要多次调用这些方法。
另一个 classic 区别是构造函数总是 return 对象的引用。这是默认的隐式行为,我们不需要在签名中明确指定。
但是,方法可以 return 根据您的选择。
示例:
public class A {
String mA;
/* Constructor initilaizes the instance members */
public A (String mA) {
this.mA = mA;
}
/* this is parameterized method that takes mB as input
and helps you operate on the object that has the instance
member mA */
public String doOperation (String mB) {
return mA + " " + mB;
}
public static void main(String args[]) {
/* this would call the constructor and initialize the instance variable with "Hello" */
A a = new A("Hello");
/* you can call the methods as many times as you want */
String b= a.doOperation ("World");
String c = a.doOperation ("How are you");
}
}
方法和构造函数是完全不同的概念,服务于不同的目的。
构造函数指定用于初始化对象和任何 setting/data 对象 creates.You 无法再次调用构造函数时设置的对象。每个对象将调用一次(您可以从另一个构造函数调用一个构造函数 class)
方法是一个功能单元,你可以call/reuse他们想要多少就多少。
希望对您有所帮助
谢谢,
我刚开始学习Java,从Java第九版Herber Schildt[第6章],
来到参数化方法和参数化构造函数这个主题我了解如何声明它们以及它们如何工作,但是我对它们的用法感到困惑,何时使用参数化方法以及何时使用参数化构造函数?
请举个简单类比的例子
它们的主要区别在于 return 类型。构造函数没有 return 任何东西,甚至没有无效。当实例化 class 时,构造函数是 运行。另一方面,parameterized methods 用于类型安全,即允许不同的 classes 而无需转换。
public class Person {
String name ;
int id;
//Default constructor
Person(){
}
//Parameterized constructor
Person(String name, int id){
this.name = name;
this.id = id;
}
public static void main(String[] args) {
Person person = new Person("Jon Snow",1000); // class instantiation which set the instance variables name and id via the parameterised constructor
System.out.println(person.name); //Jon Snow
System.out.println(person.id); //1000
Person person1 = new Person(); //Calls the default constructor and instance variables are not set
System.out.println(person1.name); //null
System.out.println(person1.id); //0
}
}
首先你应该理解构造函数的实际含义。
您可以将 "Constructor" 视为每当您为 class 创建对象时都会调用的函数。在 class 中你可以有很多实例变量,即 class 的每个对象都有它自己的实例变量副本。因此,每当您使用 new ClassName (args)
语句创建一个新对象时,您都可以在构造函数中初始化该对象的实例变量的值,因为无论何时实例化一个对象,它都会首先被调用。请记住,创建对象时只会调用一次构造函数。
此外还有两种类型的方法实例和静态方法。两种类型都可以接受参数。如果您使用的是静态参数化方法,那么您不能在 class 的对象上调用该方法,因为它们可以对 class 的静态变量进行操作。
实例参数化方法可以使用 class 的实例和静态成员,它们在对象上调用。它们代表一种对您调用方法的对象执行特定操作的机制。在这些方法(静态和实例)中传递的参数可以作为您要完成的操作的输入。 与对象实例化时只调用一次的构造函数不同,您可以根据需要多次调用这些方法。
另一个 classic 区别是构造函数总是 return 对象的引用。这是默认的隐式行为,我们不需要在签名中明确指定。 但是,方法可以 return 根据您的选择。
示例:
public class A {
String mA;
/* Constructor initilaizes the instance members */
public A (String mA) {
this.mA = mA;
}
/* this is parameterized method that takes mB as input
and helps you operate on the object that has the instance
member mA */
public String doOperation (String mB) {
return mA + " " + mB;
}
public static void main(String args[]) {
/* this would call the constructor and initialize the instance variable with "Hello" */
A a = new A("Hello");
/* you can call the methods as many times as you want */
String b= a.doOperation ("World");
String c = a.doOperation ("How are you");
}
}
方法和构造函数是完全不同的概念,服务于不同的目的。
构造函数指定用于初始化对象和任何 setting/data 对象 creates.You 无法再次调用构造函数时设置的对象。每个对象将调用一次(您可以从另一个构造函数调用一个构造函数 class)
方法是一个功能单元,你可以call/reuse他们想要多少就多少。
希望对您有所帮助 谢谢,