前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小朋友学Java(10):多态

小朋友学Java(10):多态

作者头像
海天一树
发布2018-04-17 12:03:34
5660
发布2018-04-17 12:03:34
举报
文章被收录于专栏:海天一树

学本节之前,可以先复习 小朋友学C++(12):多态

一、定义

多态是同一个行为具有多个不同表现形式或形态的能力。

二、现实中的多态

例1:打印机

例2:按下键盘的F1键 如果当前是在Win 7的桌面,会弹出“Windows帮助和支持” 如果当前是在Word界面,会打开Word的帮助页面 如果当前是在IE浏览器窗口,会打开“Internet Explorer帮助”

三、多态的3个必要条件

联想一下花木兰替父从军的故事,多态的存在有三个前提 1 要有继承关系 2 子类要重写父类的方法 (这里父类的方法,可以是抽象方法,也可以是普通方法) 3 父类引用指向子类对象

四、程序

代码语言:javascript
复制
abstract class Animal {  
    abstract void eat();  
}  
class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  
class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}
public class MTest {
    public static void main(String[] args) {       
      Animal a = new Cat();      // 向上转型  
      a.eat();                   // 调用的是 Cat 的 eat
      if(a instanceof Cat) {
        Cat c = (Cat)a;         // 向下转型  
        c.work();               // 调用的是 Cat 的 work
      } else if(a instanceof Dog) {
          Dog d = (Dog)a;
          d.work();
      }
      Animal a2 = new Dog();
      a2.eat();
      if(a2 instanceof Cat) {
          Cat c = (Cat)a2;
          c.work();
      } else if(a2 instanceof Dog) {
          Dog d = (Dog)a2;
          d.work();
      }
  }  
}

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海天一树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、定义
  • 二、现实中的多态
  • 三、多态的3个必要条件
  • 四、程序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档