面向对象-结婚实例

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);	
	}
}

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值