7-3 jmu-Java-03面向对象基础-05-覆盖 --笔记篇

题目

ava每个对象都继承自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.

  1. main方法
    2.1 输入n1,使用无参构造方法创建n1个对象,放入数组persons1。
    2.2 输入n2,然后指定name age gender。每创建一个对象都使用equals方法比较该对象是否已经在数组中存在,如果不存在,才将该对象放入数组persons2。
    2.3 输出persons1数组中的所有对象
    2.4 输出persons2数组中的所有对象
    2.5 输出persons2中实际包含的对象的数量
    2.5 使用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{
    String name;
    int age;
    boolean gender;
    public PersonOverride(String name, int age, boolean gender){
        this.name=name;
        this.age=age;
        this.gender=gender;
    }
    public PersonOverride(){
        this("default",1,true);
    }

    @Override
    public String toString() {
        return name + '-' + age + '-' +gender;
    }

    @Override
    public boolean equals(Object obj) {
        PersonOverride p=(PersonOverride) obj;
        return age==p.age&&gender==p.gender&&name.equals(p.name);
    }
}
public class Main{
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        ArrayList<PersonOverride> p1=new ArrayList<>();
        ArrayList<PersonOverride> p2=new ArrayList<>();
        int k=in.nextInt();
        while (k>0){
            p1.add(new PersonOverride());
            k--;
        }
        int kk= in.nextInt();
        while (kk>0){
            int sign=1;
            String name=in.next();
            int age=in.nextInt();
            boolean gender=in.nextBoolean();
            PersonOverride ex=new PersonOverride(name,age,gender);
            for (PersonOverride i:p2){
                if (i.equals(ex)) sign=0;
            }
            if (sign==1) p2.add(ex);
            kk--;
        }
        for (PersonOverride i:p1){
           System.out.println(i.toString());
        }
        for (PersonOverride i:p2){
            System.out.println(i.toString());
        }
        System.out.println(p2.size());
        System.out.println("[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]");
    }
}

笔记

  1. 掌握equals重写的写法

你可能感兴趣的:(java篇,java,笔记,python)