如何从子类访问超类中的字段?

时间:2016-12-11 19:37:59

标签: java

我在这里有两个班,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 。正如它在作业中所说的那样,我们无法从该类外部访问数组部分。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:2)

例如,您必须将该字段的访问修饰符从 private 更改为 protected public 也可以。

但请记住:这样做应该是例外

意义:良好的OO设计更多地是关于行为(又名方法)而非关于字段!换句话说:人们应该有充分的理由将字段暴露给子类。通常情况下,您会反过来工作,例如:

abstract class Base {
  abstract int getFoo();
  final void bar() {
    foo = getFoo(); 
  ...

然后扩展Base的类只是@Override方法getFoo()

此方法允许您修复基类上的某些行为;同时防止子类改变该行为;但允许他们提供最终具体的“子类”细节。

相关问题