1) Существует, потому что вам нужно объявить этот класс как защищенный или любой более высокий уровень доступа, например, public
3) Подклассы наследуют члены суперклассов (в данном случае метод).Обратное не может работать, хотя вы назначаете class2 для class1.