簡體   English   中英

如何從派生類訪問內部類構造函數?

[英]How do I access an inner class constructor from a derived class?

對於以下Ocean艙,

public class Ocean {

    /**
     * Define any variables associated with an Ocean object here. These
     * variables MUST be private.
     */
    // width of an Ocean
    private final int width;
    // height of an Ocean
    private final int height;

    class Critter {

        /**
         * Defines a location of a Critter in an Ocean.
         */
        Point location;

        public Critter(int x, int y) {
            location = new Point(x,y);
        }

        public Point getLocation() {
            return location;
        }
    }

    private Critter[][] oceanMatrix;
}

我想從下面的Shark構造函數類訪問上面的構造函數Critter

class Shark extends Ocean implements Behaviour {

    public Shark(int x, int y, int hungerLevel) {
        super(x,y);
    }
}

如何從Shark類構造函數訪問Critter類構造函數?

似乎您應該擴展Critter而不是Ocean:

class Shark extends Ocean.Critter implements Behaviour{
...
    public Shark(int x, int y, int hungerLevel){
        super(x,y);

    }
...
}

為此,Criter必須是靜態內部類。 我不知道您需要多少這種設計,但是內部類應限於彼此高度依賴的類,在這里情況並非如此。 如果可以,請將Critter移出海洋。

只要SharkOcean在同一包中,並且將static修飾符添加到Critter的類聲明中,您就應該能夠使用new Ocean.Critter()訪問Critter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM