Java 如何区分超类对象和基类对象?

Java 如何区分超类对象和基类对象?,java,inheritance,superclass,Java,Inheritance,Superclass,我有两个班,A班和B班 class A { String abcd; String efgh; } class B extends A { String check1; String check2; } 我在另一个类中有一个B类对象。我想从子类B中获得一个单独的类a对象。java中有没有特殊的方法来分离这两个类?请帮我得到正确的答案。只有一个对象(属于子类)。打印此并检查 实际上我需要B类的A类对象 这不是组合,扩展类意味着继承,在类B实例中不会有类A实例 只有一个对象(

我有两个班,A班和B班

class A {

  String abcd;
  String efgh;
}

class B extends A {

  String check1;
  String check2;
}
我在另一个类中有一个B类对象。我想从子类B中获得一个单独的类a对象。java中有没有特殊的方法来分离这两个类?请帮我得到正确的答案。

只有一个对象(属于子类)。打印此并检查


实际上我需要B类的A类对象

这不是组合,扩展类意味着继承,在类B实例中不会有类A实例

只有一个对象(属于子类)。打印此并检查


实际上我需要B类的A类对象

这不是组合,扩展类意味着继承,在类B实例中不会有类A实例

只有一个对象(属于子类)。打印此并检查


实际上我需要B类的A类对象

这不是组合,扩展类意味着继承,在类B实例中不会有类A实例

只有一个对象(属于子类)。打印此并检查


实际上我需要B类的A类对象

这不是组合,扩展类意味着继承,在类B实例中不会有类A实例

我在另一个类中有一个B类对象。我想从子类B中得到一个单独的类a对象

只有一个对象,而不是两个

java中有什么特殊的方法来分离这两个类吗

不,因为同样,只有一个对象

对于
B
实例的
A
方面,通常有两种方法:

B b = new B();
  • 仅创建对象的
    a
    方面的副本,通常使用
    a
    中的副本构造函数。这将创建一个新的第二个对象,该对象复制实例中特定于
    a
    的方面。如果
    A
    没有合适的复制构造函数,则必须添加一个(如果可以修改
    A
    )或创建自己的方法来执行此操作(如果可能,某些类具有不公开的状态)

    例如,这里有一个带有复制构造函数的
    A

    class A {
    
      String abcd;
      String efgh;
    
      public A(A a) {
        this.abcd = a.abcd;
        this.efgh = a.efgh;
      }
    }
    
    然后,如果您有一个
    B
    实例:

    B b = new B();
    
    …您将使用复制构造函数
    A
    方面复制到第二个对象:

    A a = new A(b);
    
  • 如果您只想引用类型为
    a
    而不是
    B
    的现有对象,则只需执行赋值:

    B b = new B();
    A a = b;
    
    仍然只有一个对象,它仍然是
    B
    对象,但是
    a
    变量只允许访问为
    a
    定义的属性和方法

  • 我怀疑您可能想要复制构造函数,但我想我应该提到另一个,以防您只是试图从部分代码中隐藏一些
    B
    功能(这并不少见)

    我在另一个类中有一个B类对象。我想从子类B中得到一个单独的类a对象

    只有一个对象,而不是两个

    java中有什么特殊的方法来分离这两个类吗

    不,因为同样,只有一个对象

    对于
    B
    实例的
    A
    方面,通常有两种方法:

    B b = new B();
    
  • 仅创建对象的
    a
    方面的副本,通常使用
    a
    中的副本构造函数。这将创建一个新的第二个对象,该对象复制实例中特定于
    a
    的方面。如果
    A
    没有合适的复制构造函数,则必须添加一个(如果可以修改
    A
    )或创建自己的方法来执行此操作(如果可能,某些类具有不公开的状态)

    例如,这里有一个带有复制构造函数的
    A

    class A {
    
      String abcd;
      String efgh;
    
      public A(A a) {
        this.abcd = a.abcd;
        this.efgh = a.efgh;
      }
    }
    
    然后,如果您有一个
    B
    实例:

    B b = new B();
    
    …您将使用复制构造函数
    A
    方面复制到第二个对象:

    A a = new A(b);
    
  • 如果您只想引用类型为
    a
    而不是
    B
    的现有对象,则只需执行赋值:

    B b = new B();
    A a = b;
    
    仍然只有一个对象,它仍然是
    B
    对象,但是
    a
    变量只允许访问为
    a
    定义的属性和方法

  • 我怀疑您可能想要复制构造函数,但我想我应该提到另一个,以防您只是试图从部分代码中隐藏一些
    B
    功能(这并不少见)

    我在另一个类中有一个B类对象。我想从子类B中得到一个单独的类a对象

    只有一个对象,而不是两个

    java中有什么特殊的方法来分离这两个类吗

    不,因为同样,只有一个对象

    对于
    B
    实例的
    A
    方面,通常有两种方法:

    B b = new B();
    
  • 仅创建对象的
    a
    方面的副本,通常使用
    a
    中的副本构造函数。这将创建一个新的第二个对象,该对象复制实例中特定于
    a
    的方面。如果
    A
    没有合适的复制构造函数,则必须添加一个(如果可以修改
    A
    )或创建自己的方法来执行此操作(如果可能,某些类具有不公开的状态)

    例如,这里有一个带有复制构造函数的
    A

    class A {
    
      String abcd;
      String efgh;
    
      public A(A a) {
        this.abcd = a.abcd;
        this.efgh = a.efgh;
      }
    }
    
    然后,如果您有一个
    B
    实例:

    B b = new B();
    
    …您将使用复制构造函数
    A
    方面复制到第二个对象:

    A a = new A(b);