4

我有一个带有构造函数的类 Vector

Vector(int dimension) // creates a vector of size dimension

我有一个扩展 Vector 类的类 Neuron

public class Neuron extends Vector {

    public Neuron(int dimension, ... other parameters in here ...) { 
         super(dimension);
         // other assignments below here ...
     }    
}

我想要做的是为 Neuron 类中的 Vector 分配对另一个 Vector 的引用。类似的东西

    public Neuron(Vector v, ... other parameters in here ...) { 
         super = v;
         // other assignments below here ...
     }    

当然,我不能这样做。有什么解决办法吗?即使我无法在 Neuron 类的构造函数中执行此操作,也可能没问题。

4

1 回答 1

11

您需要在类中创建一个复制构造函数Vector

public Vector(Vector toCopy) {
    this.dimension = toCopy.dimension;

    // ... copy other attributes
}

然后在Neuron你做

public Neuron(Vector v, ... other parameters in here ...) { 
     super(v);
     // other assignments below here ...
}

您也可以考虑使用组合而不是继承。事实上,这是 Effective Java 中的建议之一。在这种情况下,你会做

class Neuron {
    Vector data;

    public Neuron(Vector v, ... other parameters in here ...) {
        data = v;
        // other assignments below here ...
    }
}

相关问题:

于 2012-07-26T15:29:51.203 回答