在Java中,每个对象都继承自Object类,并拥有equals、toString等方法。本练习要求定义一个PersonOverride
类,并覆盖其toString
和equals
方法。
1. 定义PersonOverride
类
a. 属性:String name
、int age
、boolean gender
,所有变量必须为私有(private)。
b. 有参构造方法,参数为name, age, gender
。
c. 无参构造方法,使用this(name, age, gender)
调用有参构造方法,参数值分别为"default", 1, true
。
d. toString()
方法返回格式为:name-age-gender
。
e. equals
方法需比较name
、age
、gender
,这三者内容都相同才返回true
。
2. main方法
2.1 输入n1
,使用无参构造方法创建n1
个对象,放入数组persons1
。
2.2 输入n2
,然后指定name, age, gender
。每创建一个对象都使用equals
方法比较该对象是否已经在数组中存在,如果不存在,则将该对象放入数组persons2
。
2.3 输出persons1
数组中的所有对象。
2.4 输出persons2
数组中的所有对象。
2.5 输出persons2
中实际包含的对象的数量。
2.6 使用System.out.println(Arrays.toString(PersonOverride.class.getConstructors()))
输出PersonOverride
的所有构造方法。
提示:使用ArrayList
代替数组可以大幅简化代码,请尝试重构你的代码。
输入样例:
1
3
zhang 10 true
zhang 10 true
zhang 10 false
输出样例:
default-1-true
zhang-10-true
zhang-10-false
2
[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]
代码示例:
import java.util.*;
class PersonOverride {
private String name;
private int age;
private boolean gender;
public PersonOverride() {
this("default", 1, true);
}
public PersonOverride(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public String toString() {
return this.name + "-" + this.age + "-" + this.gender;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || this.getClass() != o.getClass()) {
return false;
}
PersonOverride p = (PersonOverride) o;
return Objects.equals(this.name, p.name) && this.gender == p.gender && this.age == p.age;
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n1 = in.nextInt();
in.nextLine();
PersonOverride[] persons1 = new PersonOverride[n1];
for (int i = 0; i