---------------------- android培训、java培训、期待与您交流! ----------------------

Java引用变量有两种类型:一个是编译时的类型,一个是运行时的类型。当两个类型不一致时,就产生了多态。

 1 class  DuoTaiDemo
 2 {
 3     public static void function(Cat cat1)
 4     {
 5         cat1.eat();
 6     }
 7     public static void main(String[] args)
 8     {
 9         function(new Cat());
10     }
11 }
12 abstract class Animal
13 {
14     abstract void eat();
15
16 }
17 class Cat extends Animal
18 {
19     public void eat()
20     {
21         System.out.println("吃鱼");
22     }
23 }
24 class Dog extends Animal
25 {
26     public void eat()
27     {
28         System.out.println("吃骨头");
29     }
30
31 }
32 /*
33 如果我们以后想要添加一个猪(pig)的类必须再添加一个方法
34 我们可以将function方法改为
35     public static void function(Animal animal)
36     {
37         animal.eat();
38     }
39
40 */

编写Java程序时,引用变量只能调用它编译时类型的方法,而不能调用运行时的方法。如果需要这个引用变量来调用它运行时类型的方法,则必须把它强制类型转换成运行时类型。

引用类型之间的转换只能把一个父类变量转换成子类类型。没有任何继承关系的类型,则无法进行类型转换。

 1 class DuoTaiDemo2
 2 {
 3     public static void main(String[] args)
 4     {
 5         Parent p=new Child();
 6         p.show();//子类方法一
 7         ((Child)p).show_1();//子类方法二
 8     }
 9 }
10 class Parent
11 {
12     public void show()
13     {
14         System.out.println("父类方法!");
15     }
16 }
17 class Child extends Parent
18 {
19     public void show()
20     {
21         System.out.println("子类方法一!");
22     }
23     public void show_1()
24     {
25         System.out.println("子类方法二");
26     }
27 }

  • instanceof运算符

考虑到进行强制转换可能出席那异常,因此进行类型转换之前应先通过instanceof运算符来判断是否可以转换成功

1         if (p instanceof Child)
2         {
3             Child c=(Child)p;
4             c.show_1();
5         }

---------------------- android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima

转载于:https://www.cnblogs.com/malinkang1989/archive/2012/06/04/2534794.html

黑马程序员 Java多态相关推荐

  1. 黑马程序员Java教程学习笔记(三)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...

  2. 黑马 程序员——Java基础---流程控制

    黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...

  3. 黑马 程序员——Java基础---IO(下)

    黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...

  4. 2023年黑马程序员Java学习路线图

    2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...

  5. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  6. 黑马程序员 JAVA WEB 第三节 MYSQL 约束

    这是阿锃总结的第三节黑马程序员JAVA WEB视频的MYSQL约束部分的笔记.希望可以帮助跟我一样正在学习Java web的同学们.我们一起进步.   b_d 若果有同学也想学习黑马程序员Java w ...

  7. 黑马程序员Java零基础视频教程_下部(P52-P134)

    黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...

  8. 黑马程序员Java零基础视频教程_下部(P135-P200)

    黑马程序员Java零基础视频教程_下部(P135-P200) 1 多线程 1.1 什么是多线程? 1.2 多线程的并发与并行 1.3 多线程的实现方式 1.3.1 继承Thread类的方式进行实现 1 ...

  9. 黑马程序员Java零基础视频教程_上部(P1-P80)

    黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...

  10. 黑马程序员——Java字符流、字节流IO流

    黑马程序员--Java字符流.字节流Io流 ---------------------- <a href="http://www.itheima.com"target=&qu ...

最新文章

  1. HackerRank:JavaScript 是最知名的编程语言
  2. vs html自动对齐,vscode esLint 保存时 自动对齐
  3. javascript从url中获取请求参数
  4. mysql 查找相似数据_局部敏感哈希LSH(Locality-Sensitive Hashing)——海量数据相似性查找技术...
  5. 前 k 条最短路径算法
  6. L2-002 链表去重 (25 point(s))
  7. 再创学习生命力—破与立中成长
  8. python制作ppt动画_天呐,还能这么玩!用 Python 生成动态 PPT
  9. 教程篇:《基础模块2》金蝶K3WISE15.0-注册套打教程
  10. STM32F4 CAN总线通信资料参考,提供源码参考快速上手CAN总线通信
  11. 5G工业网关下工业自动化设备远程监控系统
  12. Kafka消息积压案例分析
  13. Android 热修复原理篇及几大方案比较
  14. ORACLE EBS中附件功能的使用
  15. 数据通信系统的基本模型
  16. 潮人篮球不显示服务器,潮人篮球补篮技巧详解
  17. VC++实现的基于人眼状态的疲劳驾驶识别系统
  18. 可视化色码表--绘图视觉不可或缺的元素
  19. java判断是不是质数(素数)超短方法
  20. 暨南大学计算机在全国怎样的排名,暨南大学在全国排名第几

热门文章

  1. 关于父窗口、子窗口的操作(如关闭、打开、调用方法、刷新等等)
  2. 看到前一篇文章的感慨
  3. 关于Apache Struts2远程执行任意命令漏洞的紧急通报
  4. Spring MVC请求-响应流
  5. 带你一起来理解:函数去抖(debounce)和 函数节流(throttle)的作用和区别
  6. Visual Studio 添加外部工具
  7. oracle数据库xsb创建,在Linux下安装oracle数据库
  8. java web 限下载速_JavaWeb实现文件上传与下载的方法
  9. 计算机管理 窗口中找到 guest 用户,Guest 来宾用户不见了??
  10. fedora10 linux内核,自己动手编译Linux2.6.25.10内核(Fedora 7)