然后实例化此宠物类2次,得到两个宠物类对象的变量,并分别调用显示宠物的基本信息的成员方法,以及分别调用发出叫声的成员方法。
时间: 2024-02-21 14:56:37 浏览: 51
好的,我来为您提供代码:
```python
class Pet:
def __init__(self, name, age, color):
self.name = name
self.age = age
self.color = color
def show_info(self):
print("宠物名字:{},年龄:{}岁,颜色:{}".format(self.name, self.age, self.color))
def make_sound(self):
print("{}在叫".format(self.name))
# 实例化两次
pet1 = Pet("小花", 2, "白色")
pet2 = Pet("小黑", 1, "黑色")
# 调用第一个对象的方法
pet1.show_info() # 宠物名字:小花,年龄:2岁,颜色:白色
pet1.make_sound() # 小花在叫
# 调用第二个对象的方法
pet2.show_info() # 宠物名字:小黑,年龄:1岁,颜色:黑色
pet2.make_sound() # 小黑在叫
```
这里我们先定义了 `Pet` 类,然后进行了两次实例化操作,得到了两个宠物对象 `pet1` 和 `pet2`。接着,我们分别调用了它们的方法来显示宠物的基本信息和发出叫声。
相关问题
(1)定义⼀个宠物类(Pet),它有两个⽅法:叫cry(),吃东西eat(),定义宠物的⼦类狗(Dog),猫(Cat),覆盖⽗类的cry(),eat()⽅法,⾥⾯写 System.out.println("猫吃了鱼")这样的打印语句,另外狗有⾃⼰的⽅法看门guardEntrance(),猫⾃⼰独有的⽅法捉⽼⿏huntMice() 定义⼀个Test类,在main中定义两个Pet变量,pet1,pet2,采⽤引⽤转型实例化Dog,Cat,分别调⽤Pet的cry(),eat(); (2)将Pet引强制转换为具体的Dog,Cat,在调Dog的guardEntrance(),Cat的huntMice()(提⽰:先⽤instanceof进⾏类型判断) Pet p = new Dog() p.guradEntrance() (3)(思考)编写PetPark类,添加喂养宠物feedPet(Pet pet)的⽅法,在feedPet中调cry(),eat()⽅法,实例化PetPark类,再测试类中实例化狗 Dog dog = new Dog(), 猫 Pet cat = new Cat(),PetPark分别调feedPet()⽅法分别传参数cat,dog。深⼊理解引⼊转型和多态
好的,以下是Java代码实现:
```
// 宠物类
class Pet {
public void cry() {
System.out.println("宠物在叫!");
}
public void eat() {
System.out.println("宠物在吃东西!");
}
}
// 狗类
class Dog extends Pet {
@Override
public void cry() {
System.out.println("汪汪汪!");
}
@Override
public void eat() {
System.out.println("狗在吃骨头!");
}
public void guardEntrance() {
System.out.println("狗在看门!");
}
}
// 猫类
class Cat extends Pet {
@Override
public void cry() {
System.out.println("喵喵喵!");
}
@Override
public void eat() {
System.out.println("猫在吃鱼!");
}
public void huntMice() {
System.out.println("猫在捉老鼠!");
}
}
// 测试类
class Test {
public static void main(String[] args) {
Pet pet1 = new Dog();
Pet pet2 = new Cat();
pet1.cry(); // 汪汪汪!
pet1.eat(); // 狗在吃骨头!
pet2.cry(); // 喵喵喵!
pet2.eat(); // 猫在吃鱼!
if (pet1 instanceof Dog) {
Dog dog = (Dog) pet1;
dog.guardEntrance(); // 狗在看门!
}
if (pet2 instanceof Cat) {
Cat cat = (Cat) pet2;
cat.huntMice(); // 猫在捉老鼠!
}
}
}
// 宠物公园类
class PetPark {
public void feedPet(Pet pet) {
pet.cry();
pet.eat();
}
}
// 测试 PetPark 类
class TestPetPark {
public static void main(String[] args) {
Pet dog = new Dog();
Pet cat = new Cat();
PetPark petPark = new PetPark();
petPark.feedPet(dog); // 汪汪汪! 狗在吃骨头!
petPark.feedPet(cat); // 喵喵喵! 猫在吃鱼!
}
}
```
以上代码中,Pet是一个宠物类,有cry()和eat()两个方法。Dog和Cat类是Pet类的子类,分别继承了父类的cry()和eat()方法,并且覆盖了这两个方法。在覆盖后的方法中,打印出了狗叫的声音和狗吃骨头的行为、猫叫的声音和猫吃鱼的行为。Dog类还有一个独有的guardEntrance()方法,Cat类还有一个独有的huntMice()方法。
在测试类Test中,我们分别用Pet类型的变量pet1和pet2引用Dog类和Cat类的实例,然后通过这两个变量分别调用Pet类的cry()和eat()方法,实现了多态的效果。此外,我们还使用了引用转型,将Pet类型的变量转换为Dog类型的变量或者Cat类型的变量,并分别调用了这两个子类独有的方法。
在PetPark类中,我们定义了feedPet()方法,该方法的参数是Pet类型的变量pet。在方法内部,我们调用了pet的cry()和eat()方法,实现了多态的效果。在测试类TestPetPark中,我们分别实例化了Dog和Cat的对象,并将它们作为参数传递给PetPark的feedPet()方法,从而实现了多态和引用转型的效果。
python定义一个猫类,继承于宠物类
可以使用如下代码定义一个猫类,继承于宠物类:
```
class Pet:
def __init__(self, name):
self.name = name
def play(self):
print(f"{self.name} is playing.")
class Cat(Pet):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def make_sound(self):
print("Meow!")
```
在这个例子中,我们定义了一个宠物类 `Pet`,它有一个构造函数 `__init__`,接受一个参数 `name`,并将其保存在实例变量 `self.name` 中。宠物类还定义了一个 `play` 方法,用于打印出宠物正在玩耍的信息。
我们还定义了一个猫类 `Cat`,它继承于宠物类。猫类有一个构造函数 `__init__`,它接受两个参数 `name` 和 `breed`,并通过调用父类的构造函数来初始化 `self.name`。此外,猫类还有一个 `make_sound` 方法,用于打印出猫发出的声音。
现在我们可以创建一个猫的实例并调用它的方法:
```
my_cat = Cat("Kitty", "Persian")
print(my_cat.name) # 输出:"Kitty"
print(my_cat.breed) # 输出:"Persian"
my_cat.make_sound() # 输出:"Meow!"
my_cat.play() # 输出:"Kitty is playing."
```
阅读全文