JAVA宠物结婚(封装)

定义一个宠物,包括名称、年龄、性别、配偶等基本属性。结婚必须满足三个条件:必须是异性,同性不允许结婚;有配偶者不能结婚;要达到结婚年龄方可结婚:雄性满5岁,雌性满4岁。

 package JAVA_Project_01_05;//创建一个包

/*
定义一个宠物,包括名称、年龄、性别、配偶等基本属性。结婚必须满足三个条件:必须是异性,同性不允许结婚;
有配偶者不能结婚;要达到结婚年龄方可结婚:雄性满5岁,雌性满4岁。
 */
class Pet {//定义宠物类

    private String name;//宠物名称

    private int age;//宠物年龄

    private boolean gender;//宠物性别

    private Pet partner;//配偶

    public Pet() { }//默认构造方法

    public Pet(String name, int age, boolean gender, Pet partner) {//带参数的构造方法

        this.name = name;

        this.age = age;

        this.gender = gender;

        this.partner = partner;
    }

    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 String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Pet getPartner() {

        return partner;

    }

    public void setPartner(Pet partner) {

        this.partner = partner;

    }

    public boolean isOverAgeForMarry() {//判断是否到结婚年龄

        if (this.gender&&this.getAge()>=5){

            return true;

        }

        if (!this.gender&&this.getAge()>=4){

            return true;

        }

        return false;

    }

    public boolean marry(Pet pet) {//判断是否符合结婚条件

        if (this.gender == pet.gender) {

            System.out.println("根据规定,不允许同性结婚");

            return false;

        }

        if (this.partner != null || pet.partner != null) {

            System.out.println("一方已结婚,不能再结");

            return false;

        }

        if (!this.isOverAgeForMarry() || !pet.isOverAgeForMarry()) {//未达到结婚年龄

            System.out.println("未达到结婚年龄,不能结婚,再过几年吧");

            return false;

        }

        System.out.println("恭喜" + this.name + "和" + pet.name + "结婚!");

        this.partner = pet;

        pet.partner = this;

        return true;

    }

}

public class TextEncapsulation {//操作封装类模拟宠物结婚类

    public static void main(String[] args) {//Java程序主入口处

        Pet pet1 = new Pet("Cat1", 5, true, null);

        Pet pet2 = new Pet("Cat2", 4, false, null);

        Pet pet3 = new Pet("Cat3", 6, true, null);

        Pet pet4 = new Pet("Cat4", 5, true, null);

        Pet pet5 = new Pet("Cat5", 3, false, null);

        System.out.println("1.双方都满足结婚条件,可以结吗?");

        pet1.marry(pet2);//Cat1与Cat2符合结婚条件

        System.out.println("2.如果一方已经结婚,可以再结吗?");

        pet2.marry(pet3);//一方结婚不能再结

        System.out.println("3.如果是同性,可以结婚吗?");

        pet3.marry(pet4);//同性不能结婚

        System.out.println("4.如果一方未到结婚年龄,双方可以结婚吗?");

        pet4.marry(pet5);//一方未到结婚年龄不能结婚

        System.out.println("5.一方离婚,可以与其他宠物结婚吗?");

        pet2.setPartner(null);//当一方离婚,就可以和其他宠物结婚了

        pet2.marry(pet3);

    }
}

/*
(1)在main()主方法中,创建多个Pet对象,全面测试宠物结婚可能出现的不同情况,保证程序的正确性。

(2)marry()方法中对不同性别、年龄以及婚配情况的五个对象分别进行匹配,满足结婚条件的即可结婚,并修改配偶的值;
不满足结婚条件的宠物,拒绝结婚并将理由打印输出。
 */

发布了70 篇原创文章 · 获赞 10 · 访问量 3188

猜你喜欢

转载自blog.csdn.net/JN_Cat/article/details/103994820
今日推荐