java - Java中抽象类的继承

标签 java inheritance polymorphism abstract-class abstract

我想制作一个简单的继承实例,互联网上有很多关于该实例的信息,但我只是无法理解我的情况。

public abstract class Board {       
    private Block [][] board;               
    /**
     * creates and empty board
     */
    public Board(){
        board = new Block[6][6];

        //init board
        for(int i = 0; i<board.length ...

    }

    public abstract place(int x, int y, int type);

    public void otherFunction1();

    etc..

还有我的 child 类(class)

public class StandartBoard extends Board{

    public int place(int type, int x, int y) {
        bord[i][j].something;
    }

问题是,我想使用父类(super class)构造函数的初始化以及它的所有其他函数,但我希望 place 函数特定于 StandartBoard。我如何定义变量“board”,以便我可以使用和修改父类(super class)中的相同变量。

我知道一种方法是使用 set 和 gets,但是我不能使用 protected 或其他东西直接访问它......

最佳答案

如果您使用 protected 修饰符而不是 private 设置您的 board,那么您可以像您建议的那样直接访问它。 正如您所说,另一种方法(不一定反射(reflect)正确的做法)是为其定义一个 getter :

public Block[][] getBoard(){
    return board;
}

关于您的评论,是的,protected 具有包范围的访问权限。没有仅子类修饰符。 Java本来就有这样的修饰符。它是私有(private)保护,但在 Java 1.0 中被删除。

如果您想模仿这样的设计,您可以使用protected修饰符并强制只有父类及其子类位于同一个包中。

关于java - Java中抽象类的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039266/

相关文章:

java - Android - 多态性和Parcelable

C++ 对象构建函数返回基类类型

java - 无法连接到java中的Access数据库文件

java - 如何从匿名内部类更改 side 方法中的变量值?

java - 使用compareTo()比较对象的值

C++派生类构造函数调用基类构造函数错误

java - 扩展类的 JMapper XML 配置

java - 在 Selenium Java 中获取 ElementNotInteractableException 错误

Java - 将类方法分离到不同的文件中

haskell - 有没有办法在 GHC Haskell 中定义一个存在量化的新类型?