Java : Class inheriting self

后端 未结 8 1316
刺人心
刺人心 2021-02-15 11:19

I know this is pointless: I just find it funny and I want to inquire more about the mechanics of what happens when you create a class that inherits itself, resulting in a stack

8条回答
  •  南笙
    南笙 (楼主)
    2021-02-15 11:53

    Extending oneself generates an error of cyclic inheritance (which java doesn't allow). Your code sample does compile and is valid.


    Due to Vladimir Ivanov's persistence, I will fix my edit.

    Your code throws a StackOverflowError because of the following.

    Inside o = new Inside(0);
    

    Since Inside extends Outside, Inside first calls the super() method implicitly (since you've not called it yourself). Outside() constructor initializes Inside o and the cycle runs again, until the stack is full and it overflow (there's too many Inside and Outside inside the heap stack).

    Hope this helps especially Vladimir Ivanov.

提交回复
热议问题