12.1 多态-四大特征之四

12.1.1 概念

所谓多态,就是指一个引用(类型)在不同情况下的多种状态。

可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法。

12.1.2 注意事项

在讲解多态的时候,我们注意到这样一个现象-类型的转换。

1、java允许父类的引用变量引用它的子类的实例(对象)

Animal animal=new Cat();

2、关于类型转换还有一些细节要求,比如子类能不能转换成父类,有什么要求等等...

多态代码演示:

 1 /**日期:2016-03-04
 2  * 功能:多态的演示
 3  */
 4 public class Practice
 5 {
 6     public static void main(String []args)
 7     {
 8         Master master=new Master();
 9         master.feed(new Cat(), new Fish()); //调用子类
10     }
11 }
12
13 class Master //类主人
14 {
15     public void feed(Animal animal, Food food) //多态的方法,可以利用父类调用子类,
16     //这里的代码可以在增加子类的时候保持不动,很方便
17     {
18         animal.getName();
19         food.eat();
20     }
21 }
22
23 class Animal //父类动物
24 {
25     String name;
26     public void getName()
27     {
28         System.out.println("不知道是什么动物!");
29     }
30 }
31
32 class Cat extends Animal //动物的子类猫
33 {
34     public void getName()
35     {
36         System.out.println("这是一只猫!");
37     }
38 }
39
40 class Dog extends Animal //动物的子类狗
41 {
42     public void getName()
43     {
44         System.out.println("这是一只狗!");
45     }
46 }
47
48 class Food //父类食物
49 {
50     String name;
51     public void eat()
52     {
53         System.out.println("不知道是什么食物!");
54     }
55 }
56
57 class Fish extends Food //食物的子类鱼
58 {
59     public void eat()
60     {
61         System.out.println("猫爱吃鱼!");
62     }
63 }
64
65 class Bone extends Food //食物的子类骨头
66 {
67     public void eat()
68     {
69         System.out.println("狗爱骨头!");
70     }
71 }

运行结果:

1 这是一只猫!
2 猫爱吃鱼!

转载于:https://www.cnblogs.com/PistonType/p/5243875.html

韩顺平循序渐进学java 第12讲 多态相关推荐

  1. 韩顺平循序渐进学java 第19讲 多维数组

    19.1 二维数组 高维数组在工作中用到的不多,所以只介绍二维数组. 1.定义 语法:类型 数组名[][]=new 类型[大小][大小] 比如:int a[][]=new int[2][3] 2.分析 ...

  2. 韩顺平循序渐进学java 第13讲 抽象类.接口

    13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,称为抽象方法,用abstract来修饰该类,称为抽象类. 13.1.2 抽象类-深入讨论 抽象 ...

  3. 网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享

     网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享 韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇 韩顺平.循序渐进学.java.从入门到精通.第1讲-内容介绍.项 ...

  4. 韩顺平循序渐进学java 第21.22.23.24讲 集合

    21.1 引出问题 一个问题? 前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决? 请做一个公司职员薪水管理系统,要求完成如下功能: ...

  5. 韩顺平循序渐进学java 第10.11讲 继承.重载.覆盖

    10.1 继承-四大特征之三 10.1.1 概念 继承可以解决代码复用,让编程更加接近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类(比如刚才的Student),在父类中定 ...

  6. 从零学Java(12)之算术运算符(++、- -)

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  7. java多态ppt_轻松学Java之继承与多态PPT课件.pptx

    轻松学Java之继承与多态PPT课件.pptx 第8章 继承与多态,在前面我们已经了解了类的基本使用方法.对于面向对象的程序而言,它的精华在于类的继承可以以既有的类为基础,进而派生出新的类.通过这种方 ...

  8. 【java学习】从头再来一遍(附韩顺平_循序渐进学Java零基础【完整笔记】)

    计划任务 1.每天学习至少2个小时 2.完成教程中的课程作业 3.记录学习笔记 笔记下载-泉哥博客https://www.quange.cc/note/java/learn-java/712.html

  9. java12章_从零开始学Java 第12章 异常处理

    第12章  异常处理 世界上没有完美的事情,一个完善的程序不可能总是会准确无误的运行,它们的运行流程都是在开发人员所预料的范围之内.但是,实际却不尽人意.在程序的运行过程中可能会因为各种原因而导致出现 ...

最新文章

  1. idea 快速定位到某一行的快捷键
  2. 南海有macbook吗?
  3. 配置基于Devstack的嵌套KVM虚拟化
  4. Failed to start mongod.service: Unit mongod.service not found
  5. Android技能树 — LayoutInflater Factory小结
  6. VR 技术加上 8K 画质! 2016 年里约奥运会亮点十足
  7. 详细js读取execl内容并展示
  8. 数据结构-第10周作业(二叉树的创建和遍历算法)
  9. 【Java与智能设备】 CH05_2 Intent启动内置程序
  10. ASP.NET Core的路由[2]:路由系统的核心对象——Router
  11. Android手机指纹驱动工作原理
  12. SpringCloud升级之路2020.0.x版-1.背景
  13. Qt之QTableView的简单使用(含源码+注释)
  14. Git与GitHub的了解与运用
  15. 黑鲨给电脑重装系统的详细步骤
  16. 外卖跑腿代驾小程序源码
  17. win10时间不准_【装机教程】超详细WIN10系统安装教程,官方ISO直装与PE两种方法教程...
  18. linux 内核调试 booting the kernel.,Linux无法启动解决 booting the kernel.
  19. Android Widget——GridView 学习笔记
  20. mysql占用服务器CPU100%的解决办法

热门文章

  1. win linux 远程桌面连接,Windows 连接 Ubuntu 16.04 远程桌面
  2. 库洛游戏首次公开分享:《战双帕弥什》的动作打击感是怎么做出来的
  3. 被寄予厚望的区块链 能否为游戏行业带来新的曙光?
  4. 王者荣耀赛季末上分很枯燥,可以找一个猎游陪练一起上分
  5. 常见Java面试题之如何实现对象克隆
  6. LogMiner学习笔记
  7. 日志挖掘(logminer)
  8. 卸载VMware Workstation出现错误: vmware-vmx.exe错误
  9. 云笔记项目-补充JS面向对象编程基础知识
  10. 程序员删数据库事件引发的个人思考