关于继承:为超类分配一个引用java

assigning super class a reference java

我有一个带有构造函数的类向量

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

我有一个类神经元,它扩展了向量类

1
2
3
4
5
6
7
public class Neuron extends Vector {

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

我要做的是将神经元类中的向量指定为另一个向量的引用。有点像

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

当然,我不能这样做。有什么工作要做吗?即使我不能在Neuron类的构造函数中这样做,那也没问题。


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

1
2
3
4
5
public Vector(Vector toCopy) {
    this.dimension = toCopy.dimension;

    // ... copy other attributes
}

然后在Neuron中你会

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

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

1
2
3
4
5
6
7
8
class Neuron {
    Vector data;

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

相关问题:

  • 继承与构成的区别
  • 有利于组合而非继承