Давно хотел спросить. Когда вижу код подобный этому: public class Solution { public Solution method1 (String s) { // bla-bla } } ... когда начинается описание класса и тут же внутри него описывается метод, имеющий тип этого же класса - мне всегда это кажется нелогичным. Ведь класс ещё не описан до конца и не создан, да и вообще как это можно так внутри самого себя свой же тип использовать для метода? Вот если бы было например 2 класса: один Solution, а другой скажем Answer. И метод Solution method1() объявлялся бы в классе Answer - тогда бы это казалось понятным и логичным. Т.е. сначала об"является новый класс (тип данных) Solution, а уже затем, когда он существует - его можно начинать использовать как тип для описания новых методов. Как бы разобраться с этим? Может кто объяснить или посоветовать что почитать по этому поводу?