gpt4 book ai didi

Java 继承和访问修饰符

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:53 24 4
gpt4 key购买 nike

我正在尝试创建一个这样的类系统:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com