java 多态 总结
2024-09-08 20:28:52
1.前言
引用教科书解释:
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
通俗来说:
总结:多态的抽象类与接口有点相似; 父类不需要具体实现方法,仅需要定义即可,需要在单独的类继承后成为子类,在子类实现具体方法,
调用父类方法可直接执行子类的重写方法,
可被多个不同的类继承,
子类可直接赋值给父类,但是父类需要强转子类 ,如果一个父类下面有多个子类,那么 父类强转子类之前需要确认此刻
父类是由哪个系类赋值的后才可以转到对应的子类,否则会报错。 可见父类可拥有多种状态,因此,这就称为多态。
2.操作
(1)目录结构
(2)配置一个抽象父类
package com.example.javabaisc.myAbstract; abstract class Food {
abstract void food();
}
(3)配置两个子类
package com.example.javabaisc.myAbstract; public class Apple extends Food {
//重新父类
@Override
void food() {
System.out.println("苹果");
} void color(){
System.out.println("red");
}
}
Apple
package com.example.javabaisc.myAbstract; public class Banana extends Food{
//重写父类
@Override
void food() {
System.out.println("香蕉");
}
void color(){
System.out.println("yellow");
}
}
Banana
(4)测试类
package com.example.javabaisc.myAbstract; import org.junit.jupiter.api.Test; public class AbstractTest { @Test
public void t(){
// 子类向父类转型
Food food = new Apple();
food.food();
//父类向子类转型
Apple apple = (Apple)food;
apple.color();
System.out.println("//==================================");
// 子类向父类转型后作为参数输入
this.eat(new Apple());
this.eat(new Banana()); } private void eat(Food food){
//执行父类的方法,然后执行子类的重写方法
food.food();
//因为有一个父类被两个不同的子类继承,因此需要判断此时父类是与哪个一类为同一类的,然后才能强制转成子类,成为子类才可以调用子类方法
if (food instanceof Apple){
Apple apple = (Apple)food;
apple.color();
}else if(food instanceof Banana){
Banana banana = (Banana)food;
banana.color();
}
} }
test
3.测试
最新文章
- 我的MYSQL学习心得(一) 简单语法
- Java随笔四---Java异常
- indows 8上强制Visual Studio以管理员身份运行
- 利用电话管理器TelephonyManager获取网络和SIM卡信息
- 单列模式(data与business交互)
- WinDbg调试流程的学习及对TP反调试的探索
- Android学习系列(22)--App主界面比较
- yarn 集群部署,遇到的问题小结
- 使用ViewPager实现三个fragment切换
- 【转】 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- nc 简单的使用
- Python中__new__和__init__区别
- .Net Cache
- ES ik分词器使用技巧
- echarts移动端中例子总结。
- grokking deep learning
- 着色器语言 GLSL (opengl-shader-language)入门大全
- [Codeforces 1016F]Road Projects
- [exceltolist] - 一个excel转list的工具
- MySQL面试题36道
热门文章
- mybtis入门
- 二叉搜索树、平衡二叉树、红黑树、B树、B+树
- JavaEE复习三
- HDC2021技术分论坛:如何高效完成HarmonyOS分布式应用测试?
- pipeline input步骤
- antd动态的表格合并(包含排序功能)
- 新手指南:顶象验证码如何接入微信小程序?
- CF1454A Special Permutation 题解
- 常用DBhelper封装方法
- pdf2swf转换不成功该怎么解决啊,Process p=r.exec(";D:/swf/pdf2swf.exe \";";+pdfFile.getPath()+";\"; -o \";";+swfFile.getPath()+";\"; -T 9";);