定義一個寵物,包括名稱、年齡、性別、配偶等基本屬性。結婚必須滿足三個條件:必須是異性,同性不允許結婚;有配偶者不能結婚;要達到結婚年齡方可結婚:雄性滿5歲,雌性滿4歲。
package JAVA_Project_01_05;
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) {
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);
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);
}
}