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.测试

最新文章

  1. 我的MYSQL学习心得(一) 简单语法
  2. Java随笔四---Java异常
  3. indows 8上强制Visual Studio以管理员身份运行
  4. 利用电话管理器TelephonyManager获取网络和SIM卡信息
  5. 单列模式(data与business交互)
  6. WinDbg调试流程的学习及对TP反调试的探索
  7. Android学习系列(22)--App主界面比较
  8. yarn 集群部署,遇到的问题小结
  9. 使用ViewPager实现三个fragment切换
  10. 【转】 自定义iOS7导航栏背景,标题和返回按钮文字颜色
  11. nc 简单的使用
  12. Python中__new__和__init__区别
  13. .Net Cache
  14. ES ik分词器使用技巧
  15. echarts移动端中例子总结。
  16. grokking deep learning
  17. 着色器语言 GLSL (opengl-shader-language)入门大全
  18. [Codeforces 1016F]Road Projects
  19. [exceltolist] - 一个excel转list的工具
  20. MySQL面试题36道

热门文章

  1. mybtis入门
  2. 二叉搜索树、平衡二叉树、红黑树、B树、B+树
  3. JavaEE复习三
  4. HDC2021技术分论坛:如何高效完成HarmonyOS分布式应用测试?
  5. pipeline input步骤
  6. antd动态的表格合并(包含排序功能)
  7. 新手指南:顶象验证码如何接入微信小程序?
  8. CF1454A Special Permutation 题解
  9. 常用DBhelper封装方法
  10. pdf2swf转换不成功该怎么解决啊,Process p=r.exec("D:/swf/pdf2swf.exe \""+pdfFile.getPath()+"\" -o \""+swfFile.getPath()+"\" -T 9");