2015-09-02 4 views
-2

Может ли внутренний класс также быть подклассом. Кроме того, еще одна вещь в этом наборе Java-языка - это не позволяет мне создать экземпляр подкласса, хотя я уже создал экземпляр моего инкапсулирующего класса для внутреннего класса.Может ли внутренний класс также быть подклассом, а также

public class Main { 

Main OpTypes[] = new Main[3]; 

public static void main(String[] args) { 
    Main c = new Main(); 
    c.OpTypes[0] = new Division(6,3); 
    Jool x = new Jool(); 
} 

public class Jool { 
    public Jool() { 

    } 
} 

} 
+0

Поскольку у вас есть 98% кода, что произошло, когда вы его попробовали (используя 'extends')? – user2864740

+0

это внутренний класс, поэтому я думаю, что действительно есть смысл добавить расширение для наследования, и когда я добавил расширения к Jool, у него все еще есть ошибка. – Blockeus

+0

Ну, какая ошибка? (Do * search * для этой ошибки также и посмотрите, применим ли какой-либо из результатов - по крайней мере один будет.) – user2864740

ответ

0

Если вы попробуете это, вы обнаружите, что внутренний класс может расширить класс.

Кроме того, поскольку внутренний класс неstatic, для его построения требуется экземпляр внешнего класса. В приведенном ниже коде вы увидите два способа сделать это.

Метод test показывает наиболее распространенный способ, который должен выполняться из экземпляра (нестатического) метода внешнего класса, и в этом случае внешний класс неявно.

Способ main показывает, как это сделать вне метода экземпляра внешнего класса, и в этом случае вы должны предоставить экземпляр внешнего класса перед оператором new.

class MyBaseClass { 
} 

class Main { 

    public static void main(String[] args) { 
     Main c = new Main(); 
     Jool x = c.new Jool(); // "c" explicitly used as outer class instance 
    } 

    public void test() { 
     Jool x = new Jool(); // "this" implicitly used as outer class instance 
    } 

    public class Jool extends MyBaseClass { // Inner class extends unrelated class 
    } 

} 
Смежные вопросы