Java创建动物类animal,以及其子类

(1)创建动物类animal

具有属性体重

具有方法移动(move)和睡觉(sleep)

移动时输出“animal moving”

睡觉上输出“animal sleepping”

public class Animal {

int weight;

public void move(){

System.out.println("animal moving");

 

}

public void sleep(){

System.out.println("animal slepping");

}

}

(2)为动物类创建子类鱼类fish、鸟类bird

鱼类移动时输出“swimming”

鸟类移动时输出“flying”

public class Fish extends Animal{

public void move(){

System.out.println("swimming");

}

}

public class Bird extends Animal{

public void move(){

System.out.println("flying");

}

 

}

 

(3)请创建一只动物 aniamala,动物初始化为鸟类

(4)创建一条鱼fishb

(5)aniamala移动后睡觉,fishb睡觉后移动

 public static void main(String agrs[]) {

Animal animala=new Bird();

animala.move();

animala.sleep();

Animal fishb=new Fish();

fishb.sleep();

fishb.move();

 

 }

### 定义和创建 `Animal` 类 在 Java 中,可以通过定义一个类来表示某种实体及其行为。对于 `Animal` 类而言,它可以被看作是一个抽象的概念,用来描述所有动物共有的特性[^2]。 以下是基于引用内容构建的一个完整的 `Animal` 类示例: #### 基础版本的 `Animal` 类 ```java public class Animal { // 成员变量:代表动物的共有属性 protected String name; protected int age; // 构造方法:初始化对象的属性 public Animal(String name, int age) { this.name = name; this.age = age; } // 行为方法:吃东西 public void eat() { System.out.println(name + " is eating."); } // 行为方法:移动 public void move() { System.out.println(name + " is moving."); } } ``` 在这个基础版本中,`name` 和 `age` 是动物的共有属性,而 `eat()` 和 `move()` 则是其基本的行为[^5]。 --- #### 扩展版本的 `Animal` 抽象类 如果希望让 `Animal` 更加通用化,则可以将其设计成 **抽象类** 或者引入一些抽象方法。这样可以让子类强制实现某些特定的功能[^4]。 ```java public abstract class Animal { // 成员变量:代表动物的共有属性 protected String name; protected int age; // 构造方法:初始化对象的属性 public Animal(String name, int age) { this.name = name; this.age = age; } // 非抽象方法:吃东西 public void eat() { System.out.println(name + " is eating generic food."); } // 抽象方法:发出声音(具体实现由子类提供) public abstract void cry(); // 抽象方法:移动方式(具体实现由子类提供) public abstract void move(); } ``` 在此扩展版本中,`cry()` 和 `move()` 被声明为抽象方法,这意味着任何继承自 `Animal` 的子类都必须重写这两个方法以适应具体的动物种类。 --- #### 子类示例:`Dog` 和 `Cat` 下面是如何定义两个子类 `Dog` 和 `Cat` 并展示继承和多态的应用[^1]。 ##### `Dog` 类 ```java public class Dog extends Animal { public Dog(String name, int age) { super(name, age); } @Override public void cry() { System.out.println(name + " barks loudly!"); } @Override public void move() { System.out.println(name + " runs on four legs."); } } ``` ##### `Cat` 类 ```java public class Cat extends Animal { public Cat(String name, int age) { super(name, age); } @Override public void cry() { System.out.println(name + " meows softly."); } @Override public void move() { System.out.println(name + " walks gracefully."); } } ``` --- #### 测试代码 以下是一段测试代码,演示了如何利用多态机制调用不同子类的具体实现。 ```java public class TestAnimals { public static void main(String[] args) { Animal dog = new Dog("Rex", 3); // 多态:dog 变量指向 Dog 对象 Animal cat = new Cat("Whiskers", 2); dog.eat(); // 输出 Rex is eating generic food. dog.cry(); // 输出 Rex barks loudly! cat.eat(); // 输出 Whiskers is eating generic food. cat.move(); // 输出 Whiskers walks gracefully. } } ``` 在这段代码中,尽管 `dog` 和 `cat` 变量都被声明为 `Animal` 类型,但由于实际存储的是各自的子类实例,在调用方法时会执行对应子类中的具体实现。 --- ### 结论 通过上述例子可以看出,`Animal` 类的设计体现了面向对象编程的核心理念——继承和多态。这种设计模式不仅提高了代码的灵活性,还增强了系统的可扩展性和可维护性[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值