zoukankan      html  css  js  c++  java
  • java 基础 --多态--009

    1, 多态:同一个对象(事物),在不同时刻体现出来的不同状态
    
    2, 多态的前提:
           A:  要有继承关系
           B:  要有方法的重写
           C:  要有父类引用指向子类对象   父 f = new 子();
    
    3, 多态访问特点:
    A: 成员变量
    编译看左边,运行看左边
    B: 构造方法
    创建子类的时候,访问父类的构造方法,对父类数据初始化
    C: 成员方法
    编译看左边,运行看右边
    D: 静态方法
    编译看左边,运行看左边
    (静态和类相关,算不上重写,所以还是左边)
    总结:优于成员方法存在方法重写,所以他看右边
    4, 父不能访问子类特有的方法,问题?怎么才能使用子类特有的方法呢?
    把父类的引用强制转换为子类的引用(向下转型)


    对象间转型问题:
    向上转型 : Fu f = new Zi();
    乡下转型 : Zi z = (Zi) f;//要求f 必须能转为Zi的

    举例:
    class Fu{ int x = 10; public void method(){ System.out.println("fu"); }
    public static void function(){
    System.out.println("function fu");
    } }
    class Zi extends Fu{ int x = 100; int y = 10; public void method(){ System.out.println("zi"); } public void method2(){ System.out.println("zi2"); }
    public static void function(){
    System.out.println("function zi");
    } }
    class DuoTaiTest{ public static void main(String[] args){ Fu f = new Zi(); System.out.println(f.x); // 打印 10(看父类) System.out.println(f.y); // 编译报错 f.method1(); // 打印“zi” f.method2();// 编译报错,怎么才能不报错呢?
    Zi z = (Zi)f;
    z.method2()// haha,OK la

    f.function();// function fu

    Zi z = (Zi)f; } }


  • 相关阅读:
    如果经常访问国外站
    CouchDB降临Android
    ubuntu server操作流程百岁版
    开源HTML解析工具包jsoup 1.3.1发布
    LEMP aka LNMP
    VC编译选项
    gae地址
    feedparser 同步博客园rss到 qq zone
    跨系统共享键盘鼠标利器分享:synergy
    支持ff,ie的回车提交
  • 原文地址:https://www.cnblogs.com/ysloong/p/6411783.html
Copyright © 2011-2022 走看看