无论是男人还是女人,都有身高、体重这两个属 性,但两者标准体重的计算却是有差异的。我们该怎 么设计类来实现对男女对象的构建呢?我们可以定义 一个抽象的Person类,在该抽象类中定义子类的共同 属性,
时间: 2024-11-09 11:22:52 浏览: 18
3种不同横向尺子选择效果可滑动选择适用于身高体重等选择界面总有一款是你需要的.rar
为了设计这样的类结构,我们可以采用继承和封装的原则。首先,创建一个抽象的`Person`类作为所有人的基础模板,它包含通用的属性如姓名和年龄,以及一些共有的方法比如设置和获取体重和身高的方法。然后,为男性和女性分别创建两个子类,如`Man`和`Woman`。
`Person`类的大概设计可以像这样:
```java
public abstract class Person {
private String name;
private int age;
// 共享属性和方法
protected float weight; // 标准体重范围未定
protected float height;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter and setter methods for weight and height
// 抽象方法,用于设置和验证体重
public abstract void setWeight(float weight);
public abstract boolean isValidWeight();
// 类似的方法添加身高处理
}
// 子类 Man 和 Woman
public class Man extends Person {
@Override
public void setWeight(float weight) {
// 男性特定的体重验证逻辑
if (validateMaleWeight(weight)) {
super.setWeight(weight);
} else {
throw new IllegalArgumentException("Invalid weight for a man");
}
}
private boolean validateMaleWeight(float weight) {
// 男性的标准体重区间
return weight >= MIN_MALE_WEIGHT && weight <= MAX_MALE_WEIGHT;
}
}
public class Woman extends Person {
@Override
public void setWeight(float weight) {
// 女性特定的体重验证逻辑
if (validateFemaleWeight(weight)) {
super.setWeight(weight);
} else {
throw new IllegalArgumentException("Invalid weight for a woman");
}
}
private boolean validateFemaleWeight(float weight) {
// 女性的标准体重区间
return weight >= MIN_FEMALE_WEIGHT && weight <= MAX_FEMALE_WEIGHT;
}
}
```
这样设计使得`Man`和`Woman`类可以重写父类中的权重设定方法,并根据性别特定的规则进行验证。同时,`Person`类作为一个抽象基类,提供了一个统一的接口供其他代码操作。
阅读全文