public class Person {
private String name;
private int age;
private boolean gender;//性别
private Person partner;// 伴侣, ==》也是一个人,所以它具有Person的所有属性和方法
//使用构造方法完成初始化操作
public Person(){
}
public Person(String name,int age,boolean gender){
this.name = name;
this.age = age;
this.gender = gender;
}
/**
* 结婚
*/
public void marry(Person person){
//1.结婚对象不能为 空
if(person == null){
System.out.println("结婚伴侣不能为空!");
return;
}
//2.不能与自己结婚
if(this==person){
System.out.println("不能与自己结婚!");
return;
}
//3.同性
if(this.gender == person.gender){
System.out.println(this.name + " 与 " + person.name + "都是" + (this.gender?"男":"女") + ",同性不能结婚!");
return;
}
//4.未达到结婚年龄 男<24,女<22
if(judgeAge(this.gender,this.age) == false){
System.out.println(this.name + "没有达到结婚年龄!");
return;
}
if(judgeAge(person.gender,person.age) == false){
System.out.println(person.name + "没有达到结婚年龄!");
return;
}
//5.一方已婚
if(this.partner != null){
System.out.println(this.name + "已婚,不能重婚!");
return;
}
if(person.partner != null){
System.out.println(person.name + "已婚,不能重婚!");
return;
}
//可以结婚
this.partner = person;
person.partner = this;
System.out.println(this.name + " 与 " + person.name + "结婚成功!");
}
//将判断年龄封装成一个方法
private boolean judgeAge(boolean gender,int age){
if(gender == true && age<24){ //男性
return false;
}else if(gender == false && age<22){//女性
return false;
}
return true;
}
/**
* 离婚
*/
public void divorce(Person person){
//1.离婚的伴侣不能为空
if(person == null){
System.out.println("离婚的伴侣不能为空!");
return;
}
//2.不能与自己离婚
if(this == person){
System.out.println("不能与自己离婚!");
return;
}
//3.两个人不是夫妻,不能离婚
if(this.partner != person || person.partner != this){
System.out.println("两个人不是夫妻,不能离婚!");
return;
}
//可以离婚
this.partner = null;
person.partner = null;
System.out.println(this.name + " 与 " + person.name + "离婚成功!");
}
}