首页
学习
活动
专区
圈层
工具
发布

小朋友学Java(10):多态

学本节之前,可以先复习 小朋友学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();
      }
  }  
}

运行结果:

下一篇
举报
领券