我在这里有两个班,Minesweeper是Battleship的孩子
public class Battleship
{
private Part part[];
public boolean hit(int row, int column)
{
Part newpart = new Part(row,column);
for(int i=0; i<part.length;i++)
{
if (part[i].equals(newpart))
{
part[i].setDestroyed(true);
return true;
}
}
return false;
}
对于Minesweeper Class我有
public class Minesweeper extends Battleship
{
public Minesweeper()
{
super(2);
}
@Override
public boolean hit(int row, int column)
{
return true;
}
}
如何在不使用getter或将其公开的情况下访问数组 part 。正如它在作业中所说的那样,我们无法从该类外部访问数组部分。
非常感谢您的帮助
答案 0 :(得分:2)
例如,您必须将该字段的访问修饰符从 private 更改为 protected 。 public 也可以。
但请记住:这样做应该是例外!
意义:良好的OO设计更多地是关于行为(又名方法)而非关于字段!换句话说:人们应该有充分的理由将字段暴露给子类。通常情况下,您会反过来工作,例如:
abstract class Base {
abstract int getFoo();
final void bar() {
foo = getFoo();
...
然后扩展Base的类只是@Override方法getFoo()
。
此方法允许您修复基类上的某些行为;同时防止子类改变该行为;但允许他们提供最终具体的“子类”细节。