Java多态实践:向上转型与向下转型示例
需积分: 10 113 浏览量
更新于2024-08-13
收藏 5KB MD 举报
"Java基础与面向对象编程中的多态概念详解"
在Java编程中,多态是面向对象(OOP)的重要特性之一,它允许子类继承父类的方法并根据具体上下文动态地改变行为。本文档以"poly_code.md"为例,主要介绍了如何在实际代码中实现多态性,涉及到Java的基础概念、面向对象设计原则以及集合和包装类的应用。
首先,我们来看一个简单的多态示例。在这个例子中,我们有三个类:`Animal`,`Cat` 和 `Dog`,它们都位于`com.imooc.animal`包下。`Animal` 类是父类,包含了通用的属性(如昵称和年龄)和方法(如吃东西)。`Cat` 和 `Dog` 是`Animal` 的子类,分别表示具体的猫和狗,每个子类可能有自己的特有属性(如`Cat`的体重)和方法(如`Cat`的跑动)。
```java
// Animal.java
public class Animal {
private String name;
private int month;
// 构造函数和getter/setter方法省略...
public void eat() {
System.out.println("动物都要吃东西的能力~~~");
}
}
// Cat.java
public class Cat extends Animal {
private double weight;
// 构造函数和getter/setter方法省略...
public void run() {
System.out.println("小猫快乐的奔跑~~~");
}
// 重写父类的eat方法
@Override
public void eat() {
System.out.println("小猫特别喜欢吃鱼~~~");
}
}
// Dog.java
// 类似于Cat类,可能包含自己的特有属性和eat方法的重写
```
在`Test.java`类中,我们可以看到多态的应用。例如,当我们创建`Animal`类型的引用变量,并用`Cat`或`Dog`对象赋值,然后调用其方法时,会根据实际对象类型执行相应的方法,这就是多态的体现。
```java
// Test.java
public class Test {
public static void main(String[] args) {
Animal animal1 = new Cat("小花", 2, 3.5); // 向上转型
Animal animal2 = new Dog("小黑", 1, 4.0); // 向上转型
animal1.eat(); // 输出:小猫特别喜欢吃鱼~~~
animal2.eat(); // 输出:动物都要吃东西的能力~~~
// 向下转型,如果编译器允许,可以进一步调用子类特有的方法
Cat cat = (Cat) animal1;
cat.run(); // 输出:小猫快乐的奔跑~~~
}
}
```
总结来说,这个例子展示了Java中的多态概念,包括向上转型(将子类对象赋值给父类型引用)和向下转型(将父类型引用转换为子类型),以及如何利用多态提高代码的灵活性和复用性。此外,文档还可能涉及到了集合和包装类的使用,这些在实际编程中也是不可或缺的一部分,但根据提供的部分代码内容,这部分并未展示。如果你需要关于集合或包装类的详细介绍,请提供完整的内容,以便我能为你详细讲解。
2019-06-14 上传
2022-09-24 上传
2023-10-10 上传
点击了解资源详情
2024-12-26 上传
2024-12-26 上传
messter
- 粉丝: 0
- 资源: 2
最新资源
- ok:K5编程语言的开源解释器
- vue-tiny-loading-overlay:vue.js 2x的任何元素的微小轻量级加载叠加指令
- baseview:音频插件UI的低级窗口系统界面
- cnn_gru-regression-master.zip
- 毕业设计&课设--大学毕业设计.zip
- 数据分析
- Excel模板00固定资产管理台帐.zip
- emgo:恩戈
- stop-words:支持合并的 code.google.compstop-words 的分支
- 毕业设计&课设--大学毕业设计(Web系统),企业人力资源管理系统(小型),前端采用Bootstrap框架,后端使用.zip
- unSAFE_MODE:SAFE_MODE系统更新程序的3DS用户级二次利用。 这实际上是一个相当安全的hax(͡°͜ʖ͡°)
- Excel模板企业公司部门预付款申请表单模板.zip
- holoclean:一种用于数据丰富的机器学习系统
- YANADU_DICT:The Conlang YANADU字典自动程序
- plex-api-graphql:用于Plex API的非官方GraphQL服务器
- mayorleaguec12:Basi HTML页面