[英]Class with two constructors taking different objects as parents
我想创建一个新类,它必须能够采用两种不同类型的对象(具有几乎相同的函数和变量)。 我试图使用两个构造函数。 由于两个可能的参数类中都有几乎相同的变量,我想用同一个名为parent
变量引用它们。
我尝试了什么:
class Segment{
float phi;
float theta;
float len;
Base parent;
Segment parent;
public Segment(Base parent, float len, float phi, float theta) {
this.len = len;
this.phi = phi;
this.theta = theta;
this.parent = parent;
}
public Segment(Segment parent, float len, float phi, float theta) {
this.len = len;
this.phi = phi;
this.theta = theta;
this.parent = parent;
}
// ... functions calling parent.variableName
}
这是不可能的,因为父级是重复的,什么是解决这个问题的方法?
编辑
Segment
和Base
唯一的共同点是一些变量告诉起始端点,将新的Segments连接到。 除此之外,基地静止不动,而且分部正在移动
OO方法是为两个类创建一个公共超类:
public abstract class Super {
// Here you declare all fields and methods that your classes have in common.
}
public final class Base extends Super { ... }
public final class Segment extends Super { ... }
然后你的班级看起来像这样:
public final class YourClass {
...
private final Super parent; // only once
public YourClass(Super parent, ...) {
...
this.parent = parent;
}
}
也就是说,您只有一个构造函数和一个引用超类的字段。
让base和segment实现相同的接口。 现在将父类型更改为该接口(并删除其他父字段)
你有一些方法可以做:
声明父对象是Object:Object parent; 然后根据需要施放它。 这很简单但不好。
通过定义基类/接口来使用继承,如下面的2个答案。 如果它们具有相同的属性和方法,我更喜欢接口。 否则,请使用课程。
使用Segment或Segment等通用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.