有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的类创建对象

这句话是什么意思:

B b = new C();

这是否意味着b同时是b类和C类的对象?有人能详细说明一下吗

我知道

B b = new B();

当我从类B创建对象时,我不知道这句话是什么意思

B b = new C();

共 (2) 个答案

  1. # 1 楼答案

    B b = new C();
    

    这意味着B类型的引用引用了C类型的实例。C类是B的一个子类。在这种情况下,可以使用B类中定义的方法,方法是使用A类中这些方法的重写版本(如果存在此类方法)。这种机制被称为多态性

    假设B类有两个子类,例如AC。您将在父类的方法中编写一个通用实现。然后,您将重写子类中某些方法的行为,使它们更具体

    B b1 = new A();
    B b2 = new C();
    // the same type of references
    
    b1.performAction();
    b2.performAction();
    // the same methods, but the different code will be executed 
    // if the methods are overridden in the childs
    
  2. # 2 楼答案

    在这句话中,Cis显然与B有“isA”关系,也就是说,B要么是C的祖先,要么是C实现的接口

    换句话说,你有一个

    class B { ... }
    class C extends B [ ... }
    

    或者

    interface B { ... }
    class C implements B { ... }
    

    其中也可能有这些和BC的组合,例如,它们之间可能有多个继承步骤

    class B { ... }
    class X extends B { ... }
    class C extends X { ... }
    

    您正在创建一个C实例,并将其分配给类型为B的变量,这意味着您只能使用通过B可见的方法(至少没有显式强制转换)