在 java 中将对象设置为同一 class 中的合作伙伴
Setting objects as partners within the same class in java
作为面向对象编程初学者课程的任务,我必须在 Partner
class 中将两个对象设置为 "married"。
这是我一开始的尝试:
public class Partner {
String name;
String partner;
public Partner(String name, String partner) {
super();
this.name = name;
this.partner = partner;
}
public String getPartner() {
return partner;
}
public void setPartner(Partner()) { //think i need the object here?
this.partner = partner; //however i don't know how
}
public String getName() {
return name;
}
public static void main(String[] args) {
Partner p1 = new Partner("Name1", idk);
Partner p2 = new Partner("Name2", idk);
}
}
我的问题是我不知道如何在 setPartner
方法中使用该对象,即使那是正确的方法。通过将其中一个对象的伙伴设置为 null
.
也应该可以与另一个对象离婚
它还应该让合作伙伴自动注册为彼此结婚,如果他们中的一个被设置为与另一个结婚。例如,如果p1设置为p2的伙伴,p2也应该自动设置为p1的伙伴。
您是在问如何编写 setter 方法吗?像这样
public void setPartner(String partner) {
this.partner= partner;
}
如果您打算让一个 Partner
对象有一个指向此 class 的另一个对象的指针,您应该将 String partner
更改为 Partner partner
.
您不会总是在 Partner
构造函数中使用初始化的 Partner
对象,因此您有 3 个选项:
- 添加另一个不需要
Partner
类型参数的构造函数
- 更改现有构造函数
- 传递
null
作为参数。
在任何情况下,您都必须在其他地方初始化 partner
字段。
这就是 setter 发挥作用的地方。setPartner
函数的正确语法是:
public void setPartner(Partner partner) {
this.partner = partner;
}
getPartner()
函数应相应更改为 return 正确的类型。
您在 main()
中的代码可以是这样的:
Partner p1 = new Partner("Name1", null);
Partner p2 = new Partner("Name2", p1);
p1.setPartner(p2);
It should also be possible to get a divorce from the other object by setting one of the objects' partner to null.
这是通过使用 p.setPartner(null)
实现的,其中 p
是类型 Partner
的对象。您可能还想将两个对象 partner
s 设置为 null 而不是一个,以便于检查。
创建两个构造函数:一个仅包含 name
,另一个包含 name
和 partner
(类型为 Partner
),以便您可以灵活地进行初始化仅具有名称的对象,然后设置其合作伙伴或使用名称和合作伙伴进行初始化(如果合作伙伴已知)。
public class Partner {
private String name;
private Partner partner;
public Partner(String name) {
this.name = name;
}
public Partner(String name, Partner partner) {
this.name = name;
setPartner(partner);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setPartner(Partner partner) {
partner.partner = this;
this.partner = partner;
}
@Override
public String toString() {
String value;
if (partner != null) {
value = name + ", partner=" + partner.name;
} else {
value = name;
}
return value;
}
public static void main(String[] args) {
// Example 1
Partner p1 = new Partner("Name1");
Partner p2 = new Partner("Name2");
p1.setPartner(p2);
System.out.println(p1);
System.out.println(p2);
// Example 2
Partner p3 = new Partner("Name3");
Partner p4 = new Partner("Name4", p3);
System.out.println(p3);
System.out.println(p4);
}
}
输出:
Name1, partner=Name2
Name2, partner=Name1
Name3, partner=Name4
Name4, partner=Name3
作为面向对象编程初学者课程的任务,我必须在 Partner
class 中将两个对象设置为 "married"。
这是我一开始的尝试:
public class Partner {
String name;
String partner;
public Partner(String name, String partner) {
super();
this.name = name;
this.partner = partner;
}
public String getPartner() {
return partner;
}
public void setPartner(Partner()) { //think i need the object here?
this.partner = partner; //however i don't know how
}
public String getName() {
return name;
}
public static void main(String[] args) {
Partner p1 = new Partner("Name1", idk);
Partner p2 = new Partner("Name2", idk);
}
}
我的问题是我不知道如何在 setPartner
方法中使用该对象,即使那是正确的方法。通过将其中一个对象的伙伴设置为 null
.
它还应该让合作伙伴自动注册为彼此结婚,如果他们中的一个被设置为与另一个结婚。例如,如果p1设置为p2的伙伴,p2也应该自动设置为p1的伙伴。
您是在问如何编写 setter 方法吗?像这样
public void setPartner(String partner) {
this.partner= partner;
}
如果您打算让一个
Partner
对象有一个指向此 class 的另一个对象的指针,您应该将String partner
更改为Partner partner
.您不会总是在
Partner
构造函数中使用初始化的Partner
对象,因此您有 3 个选项:- 添加另一个不需要
Partner
类型参数的构造函数
- 更改现有构造函数
- 传递
null
作为参数。 在任何情况下,您都必须在其他地方初始化partner
字段。
- 添加另一个不需要
这就是 setter 发挥作用的地方。
setPartner
函数的正确语法是:public void setPartner(Partner partner) { this.partner = partner; }
getPartner()
函数应相应更改为 return 正确的类型。您在
main()
中的代码可以是这样的:Partner p1 = new Partner("Name1", null); Partner p2 = new Partner("Name2", p1); p1.setPartner(p2);
It should also be possible to get a divorce from the other object by setting one of the objects' partner to null.
这是通过使用
p.setPartner(null)
实现的,其中p
是类型Partner
的对象。您可能还想将两个对象partner
s 设置为 null 而不是一个,以便于检查。
创建两个构造函数:一个仅包含 name
,另一个包含 name
和 partner
(类型为 Partner
),以便您可以灵活地进行初始化仅具有名称的对象,然后设置其合作伙伴或使用名称和合作伙伴进行初始化(如果合作伙伴已知)。
public class Partner {
private String name;
private Partner partner;
public Partner(String name) {
this.name = name;
}
public Partner(String name, Partner partner) {
this.name = name;
setPartner(partner);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setPartner(Partner partner) {
partner.partner = this;
this.partner = partner;
}
@Override
public String toString() {
String value;
if (partner != null) {
value = name + ", partner=" + partner.name;
} else {
value = name;
}
return value;
}
public static void main(String[] args) {
// Example 1
Partner p1 = new Partner("Name1");
Partner p2 = new Partner("Name2");
p1.setPartner(p2);
System.out.println(p1);
System.out.println(p2);
// Example 2
Partner p3 = new Partner("Name3");
Partner p4 = new Partner("Name4", p3);
System.out.println(p3);
System.out.println(p4);
}
}
输出:
Name1, partner=Name2
Name2, partner=Name1
Name3, partner=Name4
Name4, partner=Name3