zoukankan      html  css  js  c++  java
  • 对象的转型

    转型是面向对象多态性的一个体现。

    向上转型:将子类的对象赋值给父类的引用(引用可以理解为对象)。

    比如Student继承Person,那么这样表示:

    Student s = new Student();
    Person p = s ; 

    以上两步等价于下面的一步:

    Person p = new Student();


    1.一个引用能调用哪些成员(变量和函数),取决于这个引用的类型。这就是说,p只能调用Person类中定义的成员,不能调用s中独有的成员。

    2.而一个引用调用的是哪一个方法,取决于这个引用指向的对象。就上面的例子说,如果Student和Person类中都有introduce()方法(Students中覆写了Person中的introduce()方法),那p.introduce();就指向s中的introduce()方法。

    向下转型:将父类的对象赋值给子类的引用。

    Student s1 = new Student();
    Person p = s1 ; 
    Student s2 = (Student)p ; 

    可以看出,向下转型要先向上转型,再强制向下转型。

    同样,上面三句可以等效成下面两句:

    Person p = new Student();
    Student s = (Student)p;

    下面的例子是错误的向下转型:

    Person p = new Person();//向下转型没有先向上转型
    Student s = (Student)p;

     --------------------------Oct.31

    为什么要对象转型呢?思考了一下,可能有下面的原因:

    对于向上转型,回顾上面的第一点:“一个引用能调用哪些成员(变量和函数),取决于这个引用的类型。”子类对象如果想要调用父类对象的成员,就可以向上转型。

    对于向下转型,回顾上面的第二点:“一个引用调用的是哪一个方法,取决于这个引用指向的对象。”父类对象强制转成子类对象,就可以调用子类对象的方法。

    以后在应用中慢慢体会。

    (end)

  • 相关阅读:
    我们需要什么,技术还是idea
    爱上一个人,忘记一个人
    我的大学
    早上8点,轻轨抛锚时... ...
    我的秋天
    通过注册表以及文件操作的方式获取当前正在实际使用的物理网卡MAC地址
    【分享】全局字符串转换为局部变量存储防止软件被静态分析暴露敏感字符串
    正确获取硬盘序列号源码
    【转】Xvid参数详解
    VerifyFile验证文件签名
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3397452.html
Copyright © 2011-2022 走看看