实现一个类层次来管理不同维数的整数数组(一维数组intArray矩阵Matrix三维数组Array3D、四维数组SquareMatrix),要求Matrix和array3D继承intArray,而 SquareMatrix继承Matrix,intArray的基本结构
时间: 2024-05-05 08:20:57 浏览: 66
可以如下定义:
```java
public class IntArray {
protected int[] data; // 整数数组
protected int size; // 数组元素个数
public IntArray(int size) {
this.size = size;
data = new int[size];
}
public int get(int index) {
return data[index];
}
public void set(int index, int value) {
data[index] = value;
}
public int getSize() {
return size;
}
}
```
然后,可以定义 Matrix 和 Array3D 类:
```java
public class Matrix extends IntArray {
private int numRows; // 矩阵行数
private int numCols; // 矩阵列数
public Matrix(int numRows, int numCols) {
super(numRows * numCols);
this.numRows = numRows;
this.numCols = numCols;
}
public int get(int row, int col) {
return super.get(row * numCols + col);
}
public void set(int row, int col, int value) {
super.set(row * numCols + col, value);
}
public int getNumRows() {
return numRows;
}
public int getNumCols() {
return numCols;
}
}
public class Array3D extends IntArray {
private int numSlices; // 数组深度
private int numRows; // 数组行数
private int numCols; // 数组列数
public Array3D(int numSlices, int numRows, int numCols) {
super(numSlices * numRows * numCols);
this.numSlices = numSlices;
this.numRows = numRows;
this.numCols = numCols;
}
public int get(int slice, int row, int col) {
return super.get(slice * numRows * numCols + row * numCols + col);
}
public void set(int slice, int row, int col, int value) {
super.set(slice * numRows * numCols + row * numCols + col, value);
}
public int getNumSlices() {
return numSlices;
}
public int getNumRows() {
return numRows;
}
public int getNumCols() {
return numCols;
}
}
```
最后,定义 SquareMatrix 类:
```java
public class SquareMatrix extends Matrix {
public SquareMatrix(int size) {
super(size, size);
}
}
```
这样,我们就实现了一个类层次来管理不同维数的整数数组。
阅读全文