gpt4 book ai didi

java - 类中的构造函数重载

转载 作者:行者123 更新时间:2023-12-02 05:01:33 25 4
gpt4 key购买 nike

我正在一个类中使用重载构造函数做一个项目,但我有点卡住了,下面是我应该对重载构造函数执行的操作:

“允许将名字、中间名和姓氏作为带有 int 年龄的字符串传递

接受 Name 对象引用和 int 形式的年龄

  • 在 Person 中创建一个新名称,复制名称各部分的引用。”

我不太确定如何处理我的代码,这是我得到的:

public class Person {
int age;
Name aPersonHasAName;
Name newPerson = new Name();

public Person(String firstName, String middleName, String lastName, int age) {
newPerson.firstName = firstName;
newPerson.middleName = middleName;
newPerson.lastName = lastName;
}

public Person(Name aPersonHasAName, int age) {

}

public void details() {
System.out.println(aPersonHasAName + " age: " + age);
}

}

我只是不知道我应该输入什么。我相信我已经完成了第一个重载构造函数,但我对此很陌生。

那么我应该怎么做才能使重载构造函数正常工作?

我认为拥有其他两个类的代码可能会有所帮助。

这是 PersonTester:

public class PersonTester {
public static void main(String[] args) {
Person person1 = new Person("a1", "b1", "c1", 11);
Person person2 = new Person(new Name("a2", "b2", "c2"), 22);
Person person3 = new Person(new Name("a3", "c3"), 33);
Person person4 = new Person(new Name("a4"), 44);
Person person5 = new Person(new Name(), 55);
System.out.println(person1.details());
System.out.println(person2.details());
System.out.println(person3.details());
System.out.println(person4.details());
System.out.println(person5.details());
}
}

然后这是 Name 类: 公共(public)类名称{ 字符串名字; 字符串中间名; 字符串姓氏;

public Name(String firstName, String middleName, String lastName) {
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
}

public Name(String firstName, String lastName) {
this(firstName, "", lastName);
}

public Name(String firstName) {
this(firstName, "", "");
}

public Name() {
this("", "", "");
}

public String getLastName() {
return lastName;
}

public String getMiddleName() {
return middleName;
}

public String getFirstName() {
return firstName;
}

public String getFullName(String nameString) {
StringBuilder build = new StringBuilder();
build.append(nameString);
build.deleteCharAt(nameString.length() - 1);
build.insert(0, build.hashCode());
return build.toString();
}

}

我现在遇到的问题是 PersonTester 中的错误消息,即:PrintStream 类型中的方法 println(boolean) 不适用于参数 (void)

我只需要知道需要修复哪个类才能使其工作。

我对 Java 和面向对象编程非常陌生。

最佳答案

到目前为止一切顺利。但最终您会重复相当多的代码。

构造函数

public Person(字符串firstName,字符串middleName,字符串lastName,int年龄){

是最全面的,因为它包含了所有可能的数据。

对于其他构造函数,例如需要姓氏和年龄的构造函数,您可以使用委托(delegate)构造函数:

public Person(String lastName, int age) {
this(null, null, lastName, age); /*calls the other constructor*/
}

如果您不能做出这样的假设,那么您需要手动拆分名称字符串。

关于java - 类中的构造函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com