一种制作另一个对象的方法 class
A method that makes objects of another class
我需要一个 returns 一个 class 的新对象的方法。该方法在另一个class中(我使用java)。
例如:
public Sale newSale(){
Sale sale1 = new Sale();
}
恐怕我两次使用此方法时,我将只有 1 个对象,因为它具有相同的名称 (sale1
)。
是否有替代方案或者无法做到这一点?
每次调用该方法时,都会执行此行:
Sale sale1 = new Sale();
... 并且将创建一个全新的对象,完全没有关系 使用相同的变量名 - 将分配一个新对象,重复使用相同名称的事实无关紧要;对象不是由其名称定义的。现在你只需要 return 最后:
return sale1;
别害怕,名称 sale1
只会在每次执行您的方法时在本地使用一次,您将始终获得一个新对象。调用 newSale
的人每次调用都会有一个新的 Sale
实例。
现在,这真的很基础 Java,在向世界提问之前,您一定要多了解 Java ;)
public Sale newSale(){
return new Sale();
}
每次创建 new()
都在创建一个新对象,请不要与引用混淆。
并阅读教程。
您实际上从未 return sale1 但如果您这样做了,它们将是不同的对象。 临时保存对象的变量名称(技术上是对对象的引用)不会影响该对象的实际含义。
记住变量的名称与对象的名称不同。例如考虑以下代码:
Sale sale1=new Sale();
Sale sale2=sale1;
你确实有 1 个对象被 2 个变量引用。该对象既不是 Sale1 也不是 Sale2,它是两者引用的自己的实体。
每当您看到 new
关键字时,就会创建一个新对象(每当该行代码运行时)
每次调用 new Sale()
时都会创建一个新的 Sale
对象。
public Sale newSale(){
Sale sale1 = new Sale();
return sale1;
}
您可以使用以下方法进行测试:
if(newSale() == newSale()){
System.out.println("It's the same object!");
} else {
System.out.println("They are distinct objects");
}
基本上可以,但是您必须 return 您新创建的 object。
但我认为您并不真正了解 OOP 的工作原理。
public class Person {
private String personName;
//Cobstructor
public Person(String name) {
this.personName = name;
}
//Access name of person
public String getName() {
return this.personName;
}
}
这只是一个基本的人class,有一个简单的构造函数和一个我们可以通过"getName()"访问的私有变量。
public class PersonCreator {
//Constructor
public PersonCreator() {
//Empty constructor
}
//Create a new person
public Person createPerson(String name) {
//Create new instance of class " Person"
Person aNewPerson = new Person(name);
//Return the new instance which has been created by the Java VM and is more or less indepent of the identifier
return aNewPerson;
}
}
因此,如果您创建 class PersonCreator 的实例并使用它的方法 "createPerson(String name)",它 return 每次都会有一个具有不同变量值的全新 object 等。举个例子:
//Create instance of PersonCreator
PersonCreator pc = new PersonCreator();
//Create two independent, different persons
Person p1 = pc.createPerson("Jeff");
Person p2 = pc.createPerson("Paul");
//Print names of persons
System.out.println(p1.getName());
System.out.println(p2.getName());
输出将是:
Jeff
Paul
如您所见,您使用这段代码创建了类似于您的一个不同的独立实例。
你甚至可以查看那两个地址 instances/objects:
//Print addresses
System.out.println(p1);
System.out.println(p2);
输出会是一些不同的内存地址。这证明您创建了两个不相同的 objects.
此外,您必须提及您的标识符 "sale1" 仅在您的方法中标识一个 object。这就像婴儿在医院出生,在这里医院就是你的方法。他们出院了,那是你的return。但他们可以同名,例如医院里的 Edward。它们是不同的,因为它们有不同的 parents、出生日期等。这是 Java VM 和内存地址的 "handled"。
我建议您阅读一些有关 OOP 的基础文章,以了解它是如何正常工作的。您甚至可以尝试一些简单的代码,就像我在这个答案中理论上为您所做的那样。
我需要一个 returns 一个 class 的新对象的方法。该方法在另一个class中(我使用java)。
例如:
public Sale newSale(){
Sale sale1 = new Sale();
}
恐怕我两次使用此方法时,我将只有 1 个对象,因为它具有相同的名称 (sale1
)。
是否有替代方案或者无法做到这一点?
每次调用该方法时,都会执行此行:
Sale sale1 = new Sale();
... 并且将创建一个全新的对象,完全没有关系 使用相同的变量名 - 将分配一个新对象,重复使用相同名称的事实无关紧要;对象不是由其名称定义的。现在你只需要 return 最后:
return sale1;
别害怕,名称 sale1
只会在每次执行您的方法时在本地使用一次,您将始终获得一个新对象。调用 newSale
的人每次调用都会有一个新的 Sale
实例。
现在,这真的很基础 Java,在向世界提问之前,您一定要多了解 Java ;)
public Sale newSale(){
return new Sale();
}
每次创建 new()
都在创建一个新对象,请不要与引用混淆。
并阅读教程。
您实际上从未 return sale1 但如果您这样做了,它们将是不同的对象。 临时保存对象的变量名称(技术上是对对象的引用)不会影响该对象的实际含义。
记住变量的名称与对象的名称不同。例如考虑以下代码:
Sale sale1=new Sale();
Sale sale2=sale1;
你确实有 1 个对象被 2 个变量引用。该对象既不是 Sale1 也不是 Sale2,它是两者引用的自己的实体。
每当您看到 new
关键字时,就会创建一个新对象(每当该行代码运行时)
每次调用 new Sale()
时都会创建一个新的 Sale
对象。
public Sale newSale(){
Sale sale1 = new Sale();
return sale1;
}
您可以使用以下方法进行测试:
if(newSale() == newSale()){
System.out.println("It's the same object!");
} else {
System.out.println("They are distinct objects");
}
基本上可以,但是您必须 return 您新创建的 object。
但我认为您并不真正了解 OOP 的工作原理。
public class Person {
private String personName;
//Cobstructor
public Person(String name) {
this.personName = name;
}
//Access name of person
public String getName() {
return this.personName;
}
}
这只是一个基本的人class,有一个简单的构造函数和一个我们可以通过"getName()"访问的私有变量。
public class PersonCreator {
//Constructor
public PersonCreator() {
//Empty constructor
}
//Create a new person
public Person createPerson(String name) {
//Create new instance of class " Person"
Person aNewPerson = new Person(name);
//Return the new instance which has been created by the Java VM and is more or less indepent of the identifier
return aNewPerson;
}
}
因此,如果您创建 class PersonCreator 的实例并使用它的方法 "createPerson(String name)",它 return 每次都会有一个具有不同变量值的全新 object 等。举个例子:
//Create instance of PersonCreator
PersonCreator pc = new PersonCreator();
//Create two independent, different persons
Person p1 = pc.createPerson("Jeff");
Person p2 = pc.createPerson("Paul");
//Print names of persons
System.out.println(p1.getName());
System.out.println(p2.getName());
输出将是:
Jeff
Paul
如您所见,您使用这段代码创建了类似于您的一个不同的独立实例。
你甚至可以查看那两个地址 instances/objects:
//Print addresses
System.out.println(p1);
System.out.println(p2);
输出会是一些不同的内存地址。这证明您创建了两个不相同的 objects.
此外,您必须提及您的标识符 "sale1" 仅在您的方法中标识一个 object。这就像婴儿在医院出生,在这里医院就是你的方法。他们出院了,那是你的return。但他们可以同名,例如医院里的 Edward。它们是不同的,因为它们有不同的 parents、出生日期等。这是 Java VM 和内存地址的 "handled"。
我建议您阅读一些有关 OOP 的基础文章,以了解它是如何正常工作的。您甚至可以尝试一些简单的代码,就像我在这个答案中理论上为您所做的那样。