java使用封装实现电子宠物系统的企鹅类正确输入健康值和亲密度 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60
时间: 2023-12-03 17:44:20 浏览: 108
可以通过在企鹅类中定义set方法来实现对健康值和亲密度的封装。具体实现代码如下:
```java
public class Penguin {
private int health;
private int intimacy;
public void setHealth(int health) {
if(health >= 0 && health <= 100) {
this.health = health;
} else {
this.health = 60;
}
}
public void setIntimacy(int intimacy) {
if(intimacy >= 0 && intimacy <= 100) {
this.intimacy = intimacy;
} else {
this.intimacy = 60;
}
}
}
```
在上面的代码中,我们分别定义了setHealth和setIntimacy方法来设置企鹅的健康值和亲密度。在这两个方法中,我们对输入的值进行了有效性检查,如果输入的值不在0-100的范围内,则取默认值60。这样就可以保证企鹅对象的健康值和亲密度都是有效的,并且不会受到无效输入的影响。
相关问题
使用封装实现电子宠物系统的企鹅类正确输入健康值和亲密度 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60
可以使用以下代码来实现:
```python
class Penguin:
def __init__(self, name):
self.name = name
self.health = 60
self.intimacy = 60
def set_health(self, value):
if 0 <= value <= 100:
self.health = value
else:
print("健康值无效,已设置为默认值60")
def set_intimacy(self, value):
if 0 <= value <= 100:
self.intimacy = value
else:
print("亲密度无效,已设置为默认值60")
```
这个类有三个属性:`name`、`health`和`intimacy`,其中`health`和`intimacy`的默认值都是60。类中还有两个方法:`set_health()`和`set_intimacy()`,用于设置健康值和亲密度。
在`set_health()`和`set_intimacy()`方法中,会先判断输入的值是否在有效范围内(0-100),如果是,则将对应的属性设置为输入的值;否则,输出一条提示信息,并将对应的属性设置为默认值60。这样就可以保证健康值和亲密度的有效性了。
es6:定义Pet宠物类,其中含昵称、品种、健康值属性,要保证健康值的有效性(在20到100之间,在100以上取100,在0以下取20),需要使用类和对象实现,且需要对属性进行封装
下面是一个符合要求的 ES6 Pet 宠物类的定义:
```javascript
class Pet {
constructor(nickname, breed, health) {
this._nickname = nickname;
this._breed = breed;
this._health = Math.min(Math.max(health, 20), 100);
}
// getter 和 setter 方法,用于访问和修改私有属性
get nickname() {
return this._nickname;
}
set nickname(value) {
this._nickname = value;
}
get breed() {
return this._breed;
}
set breed(value) {
this._breed = value;
}
get health() {
return this._health;
}
set health(value) {
this._health = Math.min(Math.max(value, 20), 100);
}
}
```
在上面的代码中,我们使用 `class` 关键字定义了一个名为 `Pet` 的类,并在 `constructor` 构造函数中定义了三个属性:`_nickname`、`_breed` 和 `_health`,它们分别表示宠物的昵称、品种和健康值。注意到这里的属性前面都有一个下划线,这是一种约定俗成的方式,用于表示这些属性是私有的,应该通过 getter 和 setter 方法来访问和修改。
在构造函数中,我们使用 `Math.min` 和 `Math.max` 方法来确保健康值在有效范围内,即在 20 到 100 之间。如果超出了这个范围,就将其设为最大或最小值。
接下来,我们定义了三个 getter 和 setter 方法分别用于访问和修改私有属性。这里的 getter 和 setter 方法名与属性名相同,只不过前面加了 `get` 或 `set` 关键字。例如,`get nickname()` 方法用于获取 `_nickname` 属性的值,而 `set nickname(value)` 方法用于设置 `_nickname` 属性的值。在 setter 方法中,我们同样使用了 `Math.min` 和 `Math.max` 方法来确保健康值在有效范围内。
使用这个 Pet 类创建一个对象的示例代码如下:
```javascript
const myPet = new Pet('Tom', 'cat', 80);
console.log(myPet.nickname); // 输出:Tom
console.log(myPet.breed); // 输出:cat
console.log(myPet.health); // 输出:80
myPet.health = 120;
console.log(myPet.health); // 输出:100
myPet.health = -10;
console.log(myPet.health); // 输出:20
```
在上面的代码中,我们首先使用 `new` 关键字创建了一个名为 `myPet` 的 Pet 类实例,它的昵称是 Tom,品种是 cat,健康值是 80。然后,我们分别使用 getter 方法获取了宠物的昵称、品种和健康值,并打印输出了这些值。
接着,我们使用 setter 方法将宠物的健康值设为 120,由于超出了有效范围,所以最终健康值被设为了 100。然后,我们又使用 setter 方法将宠物的健康值设为 -10,由于也超出了有效范围,所以最终健康值被设为了 20。最后,我们再次使用 getter 方法获取宠物的健康值,并打印输出了这个值。
阅读全文