为超类指定一个引用java

时间:2012-07-26 15:28:47

标签: java inheritance reference superclass

我有一个带有构造函数的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类的构造函数中执行此操作,也可能没问题。

1 个答案:

答案 0 :(得分:11)

您需要在Vector类中创建copy constructor

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 ...
}

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

class Neuron {
    Vector data;

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

相关问题: