用java定义一个抽象类Pet,其中包含name属性
时间: 2023-06-06 08:09:14 浏览: 238
以及eat()、play()两个抽象方法。代码如下:
```
public abstract class Pet {
private String name;
public Pet(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void eat();
public abstract void play();
}
```
这是一个抽象类 `Pet`,其中有一个 `name` 属性以及两个抽象方法 `eat()` 和 `play()`。具体的宠物类可以继承 `Pet` 类来实现这两个方法。
相关问题
1.多态的实现 (1)定义一个抽象类Animal,包含一个抽象方法eat()。(2)定义三个具体的动物类:Bird、Fish、Cat,它们都继承Animal类,并实现eat0)方法。 (3)定义一个接口IPet,包含两个方法:play(和 getName()用java编写
以下是多态的实现示例,使用 Java 编写:
```java
// 抽象类 Animal
abstract class Animal {
public abstract void eat();
}
// 具体类 Bird,Fish,Cat
class Bird extends Animal {
public void eat() {
System.out.println("Bird is eating.");
}
}
class Fish extends Animal {
public void eat() {
System.out.println("Fish is eating.");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("Cat is eating.");
}
}
// 接口 IPet
interface IPet {
void play();
String getName();
}
// 实现具体接口类 Pet
class Pet implements IPet {
private String name;
public Pet(String name) {
this.name = name;
}
public void play() {
System.out.println(name + " is playing.");
}
public String getName() {
return name;
}
}
public class Test {
public static void main(String[] args) {
// 多态的应用
Animal[] a = new Animal[3];
a[0] = new Bird();
a[1] = new Fish();
a[2] = new Cat();
for (int i = 0; i < 3; i++) {
a[i].eat();
}
IPet p = new Pet("Tom");
p.play();
System.out.println(p.getName());
}
}
```
这个示例中,定义了一个抽象类 Animal,它包含一个抽象方法 eat(),然后定义了三个具体的动物类 Bird、Fish、Cat,它们都继承自 Animal 并实现了 eat() 方法。接着定义了一个接口 IPet,它包含两个方法 play() 和 getName(),然后实现了一个具体的类 Pet,它实现了 IPet 接口。最后在主函数中,使用多态的思想创建了 Animal 对象数组和 IPet 对象,并且通过接口调用了对应的方法。
(1) 创建Animal类,它是一个抽象类,是所有动物类的父类。 注意: 声明一个protected整型变量legs,记录动物有几条腿 定义一个protected的构造函数,初始化legs 声明一个抽象的方法eat 声明一个具体的方法walk,打印动物行走的信息(包括它有几条腿) (2) 创建Spider类 注意: Spider类继承Animal类 定义一个默认构造函数,调用父类的构造方法说明所有的蜘蛛有8条腿 实现eat方法 (3) 根据UML类图的描述,创建接口Pet (4) 创建Cat类继承Animal类,并实现Pet接口 注意: 必须包含一个String类型的变量name存储宠物的名字 定义带一个String类型参数的构造函数,初始化动物的名字。该构造函数还必须 调用父类的构造函数指明所有的猫有4条腿 定义另一个不带参数的构造函数,调用带一个String类型参数的构造函数(提示:用this),传入参数为空字符串。 实现Pet接口的所有方法 实现eat方法 (5)创建Fish类继承Animal类。重写Animal类的方法,指明鱼不能行走,没有腿。
(1) 创建Animal类
```java
public abstract class Animal {
protected int legs;
protected Animal(int legs) {
this.legs = legs;
}
public abstract void eat();
public void walk() {
System.out.println("This animal is walking on " + legs + " legs.");
}
}
```
(2) 创建Spider类
```java
public class Spider extends Animal {
public Spider() {
super(8);
}
@Override
public void eat() {
System.out.println("The spider is eating.");
}
}
```
(3) 创建Pet接口
```java
public interface Pet {
void play();
void beFriendly();
void cuddle();
}
```
(4) 创建Cat类
```java
public class Cat extends Animal implements Pet {
private String name;
public Cat(String name) {
super(4);
this.name = name;
}
public Cat() {
this("");
}
@Override
public void eat() {
System.out.println("The cat is eating.");
}
@Override
public void play() {
System.out.println("The cat is playing.");
}
@Override
public void beFriendly() {
System.out.println("The cat is being friendly.");
}
@Override
public void cuddle() {
System.out.println("The cat wants to cuddle.");
}
}
```
(5) 创建Fish类
```java
public class Fish extends Animal {
public Fish() {
super(0);
}
@Override
public void eat() {
System.out.println("The fish is eating.");
}
@Override
public void walk() {
System.out.println("Fish can't walk!");
}
}
```
阅读全文