我正在尝试创建一个这样的类系统:
public class Matrix {
private int[][] m;
public Matrix(int rows, int cols) {
//constructor
}
public int get(int row, int col) {
return m[row][col];
}
}
public class Vector extends Matrix {
public Vector() {
//constructor
}
public int get(int index) {
return super.get(0, index);
}
}
我希望 Matrix.get(row, col) 函数公开,但我不希望它通过 Vector 类公开。我不希望这成为可能:
Vector v = new Vector();
int x = v.get(1, 1);
私有(private)访问修饰符对我没有帮助,因为它不会使方法在 Matrix 类之外可用(除了它的继承者)
关于如何做到这一点有什么想法吗?
最佳答案
不幸的是,这是不可能的,因为如果一个类继承了另一个类,您必须能够调用您正在继承的类的所有方法。
如果你不想这样做因为索引会越界,那么添加一个getRows()
和getColumns()
方法到matrix 和任何拥有 Vector 实例的人都将检查以确保当他们调用 get(int row, int col)
时它不会抛出索引越界异常。
关于Java 继承和访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007152/