Делаем правильный вывод

  • 12
  • Недоступна
У нас есть код. Но всё в нем не так… Нам нужно кое-что поменять. А именно — расставить обращения к методам суперкласса и модификаторы доступа так, чтобы получить вывод на экран определённого характера. Какого именно? Узнаете из задачи.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (148)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
PavelFatBoy
Уровень 32, Russian Federation
30 июля, 09:13
мда, ну и задачка, сделал, с помощью идеи, прописываешь super.method1() скобочки подчеркивает, прописываешь в них new B() и alt+Enter исправляет вот так и вывод верный, а валидатор не принимает, зато не компилируемый код принимает)))))))
public static class C extends B {
    public void method1(B b) {
        System.out.println("C class, method1");
    }

    public void method2() {
        System.out.println("C class, method2");
        super.method1(new B());
    }
}
Тимур Гордеев
Уровень 24, Йошкар-Ола
9 июня, 13:12
Бесполезная задача
comrade_b
Уровень 33, Амстердам, Нидерланды
8 июня, 08:28
Ну что за шляпа? Ну как может принматься некомпилируемый код валидатором? Даже если заменить private на public в Классе А, вывод на экран неверный. Этот КОР просто беда!
Oulina Full Stack Developer в Фриланс
19 апреля, 08:34
public void method2() { System.out.println("C class, method2"); super.method1(); } IntelliJ подчеркивает method1 с уведомлением "Ambiguous method call. Both". На ошибку не нужно обращать внимания, так как по условию один из методов должен быть приватным.
Andrey Sanin
Уровень 29, Минск, Belarus
17 апреля, 19:54
В методах: последовательность вызова метода и вывода в консоль текста играет большое значение
CyberBoar
Уровень 36, Russian Federation
15 апреля, 07:16
Ничего не понял. Часа два думал, как бы так расставить вызовы и модификаторы доступа, чтобы вывод соответствовал условию (подсказки старался игнорировать). Когда вроде бы, по логике вещей, сделал верно - компилятор подсвечивал красным вызов метода super.method1 в классе С, в методе method2. Компилятор утверждал, что так не пойдет - неоднозначный вызов, методы в классе А и классе B идентичны (хотя на самом деле нет, у них разные модификаторы доступа). Долго не мог понять, в чем проблема, и как это исправить. В итоге глянул правильное решение - а оно было идентичным. Попробовал запустить этот, по сообщению компилятора, нерабочий код.. и он запустился и вывод соответствовал заданию. Что это было, как это понимать, нихрена не понял.
VladimirPic Работает в Gazprom
12 апреля, 15:13
Объясните, пожалуйста, такой момент. В этой задаче я точно помнил, что super должен вызываться в первой строке, но удивился, когда увидел, что его можно гибко использовать и после sout. Can anyone explain this?
Andrey
Уровень 41, Санкт-Петербург, Россия
7 мая, 20:29
Это требование к конструкторам класса относится. В конструкторе дочернего всегда неявно вызывается конструктор родителя, а если мы хотим его явно вызвать, то нигде, кроме как на первой позиции мы его не можем расположить
VladimirPic Работает в Gazprom
8 мая, 13:12
Благодарю
Тимофей Филиппов
Уровень 28, Санкт-Петербург
8 апреля, 21:00
посмотрел на требования. Сделал все как написано. Посмотрел на порядок вывода, поправил вызовы в методах. Все прошло с первой попытки. Ничего не понял - что это было, что я должен был узнать? Подскажите пожалуйста.
zxc-17
Уровень 38, Уфа
23 февраля, 06:10
Идея эту шнягу даже компилировать отказывается, тонкий намек, что не надо так делать...
Yuri_S Инженер-конструктор 2к.
17 февраля, 09:58
Как вызвать приватный метод класса-предка из класса-потомка? Просто сделайте в классе-предке публичный метод, который вызывает приватный метод. Да кто вообще эта ваша инкапсуляция