Java 检查不同类的两个对象

Java 检查不同类的两个对象,java,Java,我有三门课: 人 父亲 孩子 儿童阶级延伸父亲,父亲延伸人类 我创建了每个类的一些实例,并将它们存储到ArrayList中 现在,我想编写一个方法来检查对象father1是否与对象child1地址字段(类Father和Child的实例)具有相同的字段地址(例如:“21 str Goodwin”),并将此方法提供给我的ArrayList,如果发现任何结果,则打印 我该怎么做 为了更加清晰,我在这里添加代码: 人类阶级: public class Om { String nume; St

我有三门课:

  • 父亲
  • 孩子
  • 儿童阶级延伸父亲,父亲延伸人类

    我创建了每个类的一些实例,并将它们存储到ArrayList中

    现在,我想编写一个方法来检查对象father1是否与对象child1地址字段(类Father和Child的实例)具有相同的字段地址(例如:“21 str Goodwin”),并将此方法提供给我的ArrayList,如果发现任何结果,则打印

    我该怎么做

    为了更加清晰,我在这里添加代码:

    人类阶级:

      public class Om {
      String nume;
      String prenume;
      String cnp;
    
    Om(String nume,String prenume,String cnp){
    this.nume=nume;
    this.prenume=prenume;
    this.cnp=cnp;
    
    }
    @Override
    public String toString() {
        return "Numele omului: " + this.nume +"\n"+ "Prenumele omului: " + this.prenume   +"\n"+ "Cnp-ul omului: " + this.cnp + "\n" ;
    }
    
    
    }
    
    父亲阶级:

    public class Parinte extends Om{
    String domiciliu;
    Parinte(String nume, String prenume, String cnp, String domiciliu){
        super(nume,prenume,cnp);
        this.domiciliu=domiciliu;
    }
    
    @Override
    public String toString() {
        return "Numele parintelui: " + nume +"\n"+
                "Prenumele parintelui :" + prenume +"\n"+ 
                "Cnp-ul parintelui: " + cnp +"\n"+ 
                "Domiciliul parintelui: "+domiciliu+"\n"; 
    }
    
    }
    
    儿童班:

    public class Copil extends Parinte {
    int varsta;
    Copil(String nume, String prenume, String cnp, String domiciliu, int varsta){
        super(nume,prenume,cnp,domiciliu);
        this.varsta=varsta;
    }
    @Override
    public String toString() {
        return "Numele copilului: " + nume +"\n"+
                "Prenumele copilului :" + prenume +"\n"+ 
                "Cnp-ul copilului: " + cnp +"\n"+ 
                "Domiciliul compiluiui: "+ domiciliu +"\n"+
                 "Varsta copilului: "+varsta+"\n";
    }
    
    
    }
    
    我按字母顺序对列表排序的方法:

    import java.util.*;
    
    public class comparareNume implements Comparator<Om>{
    public int compare(Om om1, Om om2){
        return om1.nume.compareTo(om2.nume);}
    
    
    }
    
    import java.util.*;
    公共类CompareRume实现了Comparator{
    公共整数比较(Om om1、Om om2){
    返回om1.nume.compareTo(om2.nume);}
    }
    
    我的主要课程是:

    import java.util.*;
    public class main {
    
    public static void main(String[] args) {
        Om om1=new Om("Dubolari", "Dragos", "2006004034120");
        Om om2=new Om("Andronachi","Andrei", "12591295967123");
        Parinte p1=new Parinte("Vreascu","Andy","5845289564684","Al. Cel Bun 13");
        Copil c1 = new Copil("Mamaliga","George","5942356874156","Al. Cel Bun 13", 15);
        List<Om> colectie = new ArrayList<Om>();
        colectie.add(om1);
        colectie.add(p1);
        colectie.add(c1);
        colectie.add(om2);
    
        comparareNume comparNume = new comparareNume();
        Collections.sort(colectie, comparNume);
        System.out.println(colectie);       
        }
    
    
    }
    
    import java.util.*;
    公共班机{
    公共静态void main(字符串[]args){
    Om om1=新Om(“Dubolari”、“Dragos”、“2006004034120”);
    Om om2=新Om(“安卓纳奇”、“安德烈”、“12591295967123”);
    帕林特p1=新帕林特(“Vreascu”、“Andy”、“5845289564684”、“Al.Cel Bun 13”);
    Copil c1=新的Copil(“Mamaliga”,“George”,“5942356874156”,“Al.Cel Bun 13”,15);
    List collectie=new ArrayList();
    collectie.add(om1);
    collectie.add(p1);
    添加(c1);
    collectie.add(om2);
    CompareRume comparNume=新的CompareRume();
    集合。排序(集合、比较);
    系统输出打印(collectie);
    }
    }
    
    FatherObj.getAddress().equals(ChildObj.getAddress())

    孩子和父亲内部的
    getAddress()
    和字段
    address
    示例

    private String address = "21 str Goodwin"
    
    public String getAddress() {
       return address;
    }
    

    将这样的函数放入
    Human
    ,这是通过构造函数设置的(也可以通过setter设置,但在构造函数中这样做允许不可变)

    所有子类都可以访问此函数


    然后您可以按照@NappaTheSaiyan的建议访问它

    是的,类似这样的内容。因为我认为我需要先创建getAddress方法?我可以只将getAddress()方法放在父类中,子类可以继承它吗?不要将代码加倍的理由。你可以,虽然我不习惯看到getter和setter继承我同意setter是不寻常的,但是为什么getter呢?继承有成就感的人似乎很常见。@A就我个人的经验而言,我不常看到。这只是一个观点,和所有观点一样,它的意义很小。我不能把这个方法放在“人类没有地址”字段中,所以我想我最好把它放在“父亲”字段中,因为父亲和孩子都有地址,孩子可以从那里继承它,还是我错了?我不同意。当任何其他类型的人(如
    母亲
    扩展
    )时,这将要求您的
    getAddress
    函数位于多个位置。另一种方法是创建一个
    可寻址的
    接口并在那里声明函数(
    将实现它),但无论哪种方法,都应该为该函数设置一个集中的位置,以避免重复代码。(如果一个
    Human
    有一个从未使用过的地址,只需将其设置为
    null
    ——您甚至可以有一个额外的
    hasAddress()
    标志函数。某些东西…)在我看来,将该函数放入
    父项中是一个错误。好的,我理解您的意思,这是一个不错的选择。
    
    public Human(String address)  {
       addr = address;
    }
    public String getAddress()  {
       return  addr;
    }