java - 如何将父类(super class)对象与基类对象分开?

标签 java inheritance superclass

我有两个类(class),A类和B类。

class A {

  String abcd;
  String efgh;
}

class B extends A {

  String check1;
  String check2;
}

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

最佳答案

I'm having one object of class B in one other class. I want to get a separate object of class A from the subclass B.

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

Is there any special methods in java for separating these two classes?

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

通常有两种方法可以获取 B 实例的 A 方面:

  1. 仅创建对象的 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);
    
  2. 如果您只想引用类型为 A 而不是 B 的现有对象,只需进行赋值即可:

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

    仍然只有一个对象,并且它仍然是一个B对象,但是a变量只提供对定义的属性和方法的访问对于A

我怀疑您可能需要复制构造函数,但我认为我应该提及另一个,以防您只是试图从部分代码中隐藏一些 B 功能(这不是不常见)。

关于java - 如何将父类(super class)对象与基类对象分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274532/

相关文章:

java - var 无法解析为类型 - java-10

java - 子类是否继承私有(private)字段?

java - 如何从另一个类访问具有多个 swing 组件的方法? ( java )

java - 我可以在我的父类(super class)中使用子类的名称吗?

java - Java 中使用循环的 if 语句和搜索字符串数组

java - 如何创建一个包含历史和 future 项目的 Flux?

python - 包装python父类(super class)的所有方法

initialization - Swift 子类化——如何覆盖 Init()

java - 双向链接 Lisl 不断出现空指针错误

ios - 协议(protocol)扩展在 Swift 中是如何工作的?