public class Person4 {
/* 一个Person类,定义人的基本属性:name(姓名)、age(年龄)、gender(性别)、partner(配偶)。
要求至少为Person类写一个marry(Person p)方法,来判断两个人是否可以结婚。如果可以结婚,将其partner属性赋值为其配偶。
结婚要满足以下3个条件。
●必须是异性,同性暂时不允许结婚。
●有配偶者不能结婚,犯重婚罪。
●要达到结婚年龄方可结婚:男性22岁以上,女性20岁以上。
注意:当两个对象结婚后,应该给这两个对象的配偶属性赋值。
*/
private String name;//定义名字
private int age;//定义年龄
private boolean gender;//定义性别,为true时表示男性,为false时表示女性
private Person4 partner;//定义配偶
public Person4(){//定义空的构造方法
}
public Person4(String name,int age,boolean gender,Person4 partner){//定义一个构造方法
this.name=name;
this.age=age;
this.gender=gender;
this.partner=partner;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
public Person4 getPartner() {
return partner;
}
public void setPartner(Person4 partner) {
this.partner = partner;
}
//判断是否到结婚年龄
public boolean isAgeForMarry(){
if(this.gender&&this.getAge()>=22)//男性年龄大于等于23
return true;
if(!this.gender&&this.getAge()>=20)//女性年龄大于21
return true;
return false;
}
//判断是否满足结婚条件,返回boolean值,符合就返回true
public boolean marry(Person4 p){
if(this.gender==p.gender){
System.out.println("国家法律暂时不允许同性结婚!");
return false;
}
if(this.partner!=null||p.partner!=null){
System.out.println("一方已经有配偶,再结婚构成重婚罪!");
return false;
}
if(!this.isAgeForMarry()||!p.isAgeForMarry()){
System.out.println(this.getName()+"或"+p.getName()+"没有达到法定结婚年龄,不能结婚!。");
return false;
}
System.out.println(this.name+"和"+p.name+"符合结婚条件,允许结婚");
this.partner=p;//2人结婚后将partner设置为已婚,当前对象的配偶是p
p.partner=this;//p的配偶是当前对象
return true;
}
}
class marryTest{
public static void main(String[] args) {
Person4 p1=new Person4("牛魔王",35,true,null);
Person4 p2=new Person4("铁扇公主",30,false,null);
Person4 p3=new Person4("至尊宝",26,true,null);
Person4 p4=new Person4("紫霞",24,false,null);
Person4 p5=new Person4("许仙",25,true,null);
Person4 p6=new Person4("白素贞",23,false,null);
Person4 p7=new Person4("小青",19,false,null);
p1.marry(p2);
System.out.println("牛魔王已经和铁扇公主结婚了,欲和紫霞结婚,得到的答复是:");
p1.marry(p4);
System.out.println();
//铁扇公主和至尊宝结婚
System.out.println("铁扇公主已经和牛魔王结婚了,欲和至尊宝,得到的答复是:");
p2.marry(p3);
System.out.println();
//许仙和至尊宝结婚
System.out.println("许仙和至尊宝申请结婚,得到的答复是:");
p5.marry(p3);
System.out.println();
System.out.println("紫霞和至尊宝申请结婚,得到的答复是:");
p3.marry(p4);
System.out.println();
//小青申请和许仙结婚
System.out.println("小青申请和许仙结婚,得到的答复是:");
p7.marry(p5);
System.out.println();
//许仙和白素贞结婚
System.out.println("许仙和白素贞结婚,得到的答复是:");
p5.marry(p6);
System.out.println();
p7.setAge(22);//将小青的年龄修改为22
//小青达到结婚年龄,但是许仙已经有配偶,仍无法结婚
System.out.println("小青年龄修改后达到结婚年龄,申请和许仙结婚,得到的答复是:");
p7.marry(p5);
System.out.println();
//许仙和白素贞离婚,再和小青结婚是可以的
p5.setPartner(null);//将许仙的配偶设置为空
System.out.println("许仙和白素贞离婚了,申请和小青结婚,得到的答复是:");
p5.marry(p7);
}
}