这段代码如何将子类对象分配给超类类型?

国标

在下面的代码中,有人可以向我解释“A ba = (A)b;”的含义吗?并向我解释输出以及它们是如何导出的。

class A {
    public void f(A a) { System.out.println("fa(A)");}
    public void f(B b) { System.out.println("fa(B)");}
}

class B extends A {
    public void f(A a) { System.out.println("fb(A)"); }
    public void f(B b) { System.out.println("fb(B)"); } 
}

public class TypeMeister {
    public static void main(String[] args){
        A a = new A();
        B b = new B();
        A ba = (A)b; //please explain

        a.f(a);
        a.f(b);
        b.f(a);
        b.f(b);
        a.f(ba);
        b.f(ba);;
        ba.f(a);
        ba.f(b);
        ba.f(ba);
    }
}

谢谢你的帮助。

cs95

A ba = (A)b;是显式类型转换操作。b显式属于 类型B,但隐式属于 类型A,因为B是 的子类A

由于B是 的子类A,您可以这样初始化对象b

A b = new B(); 

这相当于

B b = new B();
A ba = (A)b;

...但短了 1 行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将继承类的对象分配给超类对象

来自分类Dev

将子类对象分配给父类的对象

来自分类Dev

将子类对象分配给父类的对象

来自分类Dev

将子类分配给父类类型的属性

来自分类Dev

将子类分配给父类类型的属性

来自分类Dev

如何将子类分配给非泛型类中的泛型字段

来自分类Dev

如何将类类型分配给通配符类定义(java)

来自分类Dev

他们在这段代码中做了什么(将 $({}) 分配给对象属性)?

来自分类Dev

子类的Arraylist不能分配给超类的arraylist

来自分类Dev

如何将“此”对象分配给静态类指针

来自分类Dev

如何将类方法分配给类属性?

来自分类Dev

如何将子类对象转换为超类对象

来自分类Dev

如何将原型分配给对象文字?

来自分类Dev

如何将查询结果分配给对象

来自分类Dev

如何将子类称为超类类型

来自分类Dev

将字典分配给类对象

来自分类Dev

Automapper如何将一个对象的属性分配给相同类型的两个对象的属性

来自分类Dev

将子类分配给父类中的变量

来自分类Dev

如何将一个类的对象作为字符串运算符分配给变量?

来自分类Dev

如何将这些类型谓词的类型分配给它们的参数的类型?

来自分类Dev

如何将IList <T1>分配给IList <T2>,其中T1是T2的子类型?

来自分类Dev

如何将IList <T1>分配给IList <T2>,其中T1是T2的子类型?

来自分类Dev

如何将泛型类型变量分配给已知类型?

来自分类Dev

如何将 Json 响应对象分配给 React Native 中的状态对象

来自分类Dev

将原子类型的指针分配给非原子类型的指针

来自分类Dev

将类型从@types 分配给本地代码?

来自分类Dev

定义移动分配运算符时,如何将包含unique_ptr的对象分配给其类型的矢量?

来自分类Dev

无法将类实例分配给其协议类型?

来自分类Dev

如何将多个LINQ Include()语句分配给变量以重复使用代码?

Related 相关文章

  1. 1

    将继承类的对象分配给超类对象

  2. 2

    将子类对象分配给父类的对象

  3. 3

    将子类对象分配给父类的对象

  4. 4

    将子类分配给父类类型的属性

  5. 5

    将子类分配给父类类型的属性

  6. 6

    如何将子类分配给非泛型类中的泛型字段

  7. 7

    如何将类类型分配给通配符类定义(java)

  8. 8

    他们在这段代码中做了什么(将 $({}) 分配给对象属性)?

  9. 9

    子类的Arraylist不能分配给超类的arraylist

  10. 10

    如何将“此”对象分配给静态类指针

  11. 11

    如何将类方法分配给类属性?

  12. 12

    如何将子类对象转换为超类对象

  13. 13

    如何将原型分配给对象文字?

  14. 14

    如何将查询结果分配给对象

  15. 15

    如何将子类称为超类类型

  16. 16

    将字典分配给类对象

  17. 17

    Automapper如何将一个对象的属性分配给相同类型的两个对象的属性

  18. 18

    将子类分配给父类中的变量

  19. 19

    如何将一个类的对象作为字符串运算符分配给变量?

  20. 20

    如何将这些类型谓词的类型分配给它们的参数的类型?

  21. 21

    如何将IList <T1>分配给IList <T2>,其中T1是T2的子类型?

  22. 22

    如何将IList <T1>分配给IList <T2>,其中T1是T2的子类型?

  23. 23

    如何将泛型类型变量分配给已知类型?

  24. 24

    如何将 Json 响应对象分配给 React Native 中的状态对象

  25. 25

    将原子类型的指针分配给非原子类型的指针

  26. 26

    将类型从@types 分配给本地代码?

  27. 27

    定义移动分配运算符时,如何将包含unique_ptr的对象分配给其类型的矢量?

  28. 28

    无法将类实例分配给其协议类型?

  29. 29

    如何将多个LINQ Include()语句分配给变量以重复使用代码?

热门标签

归档