代码改变世界

多态

2018-05-21 15:45  yelena  阅读(143)  评论(0编辑  收藏  举报

定义:父类引用变量指向子类对象

前提:子父类继承关系 或者接口实现关系

格式:Fu f = new Zi();

成员变量的特点

成员属性:编译运行都看父类

成员方法:编译看父类,运行看子类 

向上转型:多态本身 使用父类共性功能

向下转型:首先已经向上转型过的变量才能向下转型 使用子类特有功能

instanceof  向下转型时看父类变量是不是和子类类型匹配

格式:ZI z = (Zi) f;

package com.oracle.Demo02;

public class Bilaoye {
     public void jiangke(){
         System.out.println("历史");
     }
     public void diaoyu(){
         System.out.println("钓鱼");
     }
}
package com.oracle.Demo02;

public class Bilaoshi extends Bilaoye {
          public void jiangke(){
              System.out.println("英语");
          }
          public void move(){
              System.out.println("看电影");
          }
}
package com.oracle.Demo02;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Bilaoye bly = new Bilaoshi();
        bly.jiangke();
        bly.diaoyu();
        if(!(bly instanceof Bilaoshi)){
            System.out.println("类型不对");
            return;
        }
        Bilaoshi bls = (Bilaoshi) bly;
        bls.move();
    }

}