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