我有两个班,A班和B班。
class A {
String abcd;
String efgh;
}
class B extends A {
String check1;
String check2;
}
我在另一个班级中有一个B级对象。我想从子类B得到一个单独的A类对象。在java中是否有任何特殊的方法来分离这两个类?请帮助我得到正确的答案。
答案 0 :(得分:3)
我在另一个班级中有一个B级对象。我想从子类B中获得A类的单独对象。
只有一个对象,而不是两个。
java中有没有用于分隔这两个类的特殊方法?
不,因为再次,只有一个对象。
通常有两种方法可以 A
个B
个方面的<{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();
...您使用复制构造函数将<{strong>}的A
方面复制到第二个对象:
A a = new A(b);
如果您只想引用A
类型而非B
的现有对象,则只需执行作业:
B b = new B();
A a = b;
仍然只有一个对象,它仍然是B
对象,但a
变量只能访问属性和为A
定义的方法。
我怀疑你可能想要复制构造函数,但我想我应该提一下,以防你只是试图隐藏部分代码的B
功能(这并不常见) )。
答案 1 :(得分:0)
只有一个对象(子类)。打印this
并检查。
实际上我需要B类的A类对象
这不是组合,扩展类意味着继承,你不会在B类实例中拥有类A实例。
答案 2 :(得分:0)
classBObject.getClass().getSuperclass()
会返回Class B
的父类。
答案 3 :(得分:0)
我在另一个班级中有一个B级对象。我想从子类B中获得A类的单独对象。
在您提供的设计中,实际上只有一个 B 对象继承自 A ,因此两个对象之间的关系是&#34; {{3 }}&#34;关系。如果存在这种关系,则无法将这两个类分开。在组合的情况下,(&#34; is a&#34;关系)你可以获得封装对象,第二个关系的天真实现看起来像这样:
class A {
String abcd;
String efgh;
}
class B {
String check1;
String check2;
A a;
A getA() {
return a;
}
}