每日一练_25. Java面向对象 - 封装、继承和多态. 第八关:什么是多态,怎么使用多态。

此代码示例展示了Java中的多态特性和继承概念。通过创建Animal类及其子类Dog、Cat和Lion,每个子类重写了父类的eat()方法,实现了不同的行为。在main方法中,以多态的方式实例化这些对象并调用eat()方法,分别打印出不同的动物吃的食物,验证了多态的动态绑定特性。
部署运行你感兴趣的模型镜像

public class educoder08{
    public static void main(String[] args) {
        // 以多态方式分别实例化子类对象并调用eat()方法
        /********* begin *********/
        Dog dog = new Dog();
        Cat cat = new Cat();
        Lion lion = new Lion();
        dog.eat();
        cat.eat();
        lion.eat();
        /********* end *********/
    }
}

// Animal类中定义eat()方法
class Animal {
    /********* begin *********/
    public void eat(){};
    /********* end *********/
}

// Dog类继承Animal类 复写eat()方法
class Dog extends Animal {
    /********* begin *********/
    public void eat(){
        System.out.println("eating bread...");
    }
    /********* end *********/
}

// Cat类继承Animal类 复写eat()方法
class Cat extends Animal {
    /********* begin *********/
    public void eat(){
        System.out.println("eating rat...");
    }
    /********* end *********/
}

// Lion类继承Animal类 复写eat()方法
class Lion extends Animal {
    /********* begin *********/
    public void eat(){
        System.out.println("eating meat...");
    }
    /********* end *********/
}

测试结果:

eating bread...
eating rat...
eating meat...

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

### Java面向对象编程中的封装继承多态综合练习题及实践案例 Java 面向对象编程的核心概念包括封装继承多态,这些特性共同构成了复杂的软件系统设计基础。以下是一些综合练习题实践案例,可以帮助理解并应用这些概念。 #### 1. 封装的实践案例 封装是将数据操作数据的方法绑定在一起,并隐藏对象的内部实现细节[^2]。一个典型的例子是创建一个 `BankAccount` 类,该类包含账户余额等私有属性,通过公共方法访问或修改这些属性。 ```java public class BankAccount { private String accountNumber; private double balance; public BankAccount(String accountNumber, double initialBalance) { this.accountNumber = accountNumber; this.balance = initialBalance; } public void deposit(double amount) { if (amount > 0) { balance += amount; } } public boolean withdraw(double amount) { if (amount > 0 && amount <= balance) { balance -= amount; return true; } return false; } public double getBalance() { return balance; } } ``` #### 2. 继承的实践案例 继承允许一个类(子类)从另一个类(父类)派生,从而重用代码并扩展功能[^3]。例如,可以定义一个 `Animal` 父类多个子类如 `Dog` `Cat`,子类继承父类的通用行为并添加特定功能。 ```java class Animal { protected String name; public Animal(String name) { this.name = name; } public void makeSound() { System.out.println(name + " makes a sound."); } } class Dog extends Animal { public Dog(String name) { super(name); } @Override public void makeSound() { System.out.println(name + " barks."); } } class Cat extends Animal { public Cat(String name) { super(name); } @Override public void makeSound() { System.out.println(name + " meows."); } } ``` #### 3. 多态的实践案例 多态允许使用父类引用调用子类的具体实现[^4]。结合上述继承的例子,可以通过父类引用调用不同子类的 `makeSound` 方法。 ```java public class PolymorphismExample { public static void main(String[] args) { Animal dog = new Dog("Rex"); Animal cat = new Cat("Whiskers"); dog.makeSound(); // 输出: Rex barks. cat.makeSound(); // 输出: Whiskers meows. } } ``` #### 4. 综合练习题 - 创建一个 `Shape` 父类,包含计算面积的方法 `getArea()`。 - 定义两个子类 `Circle` `Rectangle`,分别实现各自的 `getArea()` 方法。 - 使用多态在主程序中调用不同形状的 `getArea()` 方法,验证其输出是否正确。 ```java abstract class Shape { abstract double getArea(); } class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override double getArea() { return Math.PI * radius * radius; } } class Rectangle extends Shape { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override double getArea() { return width * height; } } public class Main { public static void main(String[] args) { Shape circle = new Circle(5); Shape rectangle = new Rectangle(4, 6); System.out.println("Circle Area: " + circle.getArea()); // 输出: Circle Area: 78.53981633974483 System.out.println("Rectangle Area: " + rectangle.getArea()); // 输出: Rectangle Area: 24.0 } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是壮壮没错了丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值