package com.javarush.task.task20.task2023;
/*
Делаем правильный вывод
*/
public class Solution {
public static void main(String[] s) {
A a = new C();
a.method2();
}
public static class A {
private void method1() {
System.out.println("A class, method1");
}
public void method2() {
System.out.println("A class, method2");
method1();
}
}
public static class B extends A {
private void method1() {
super.method2();
System.out.println("B class, method1");
}
public void method2() {
System.out.println("B class, method2");
}
}
public static class C extends B {
public void method1() {
System.out.println("C class, method1");
}
public void method2() {
System.out.println("C class, method2");
super.method1();
}
}
}
Почему компилятор позволяет здесь доступ через метод подкласса к приватному методу суперкласса? Предполагаю, что вложенные классы во всем виноваты (поскольку без вложенных классов, как положено, запрещает), но хотелось бы узнать конкретный механизм. Дмитрий
25 уровень
Доступ к приватным методам суперкласса
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
2 июля 2021, 09:53
super.method1(); - как я понял вызывает метод класса который на 1 уровень выше текущего в иерархии наследования , а не самого высшего. тобиш вызовется метод класса В, а не приватный метод класса А.
0
Дмитрий
4 января 2020, 17:04
Не пойму только почему ИДЕЯ подсвечивает место для параметров метода, мол введите что-нибудь? Хотя все методы не имеют параметров.
0
Дмитрий
4 января 2020, 17:01
Вначале я пытался у объекта класса С вызвать сразу метод класса А, как бы перепрыгнуть, а затем увидел, что можно в классе В до вывода на консоль вызвать метод класса А. Все встало на свои места!
0
Сергей
2 января 2020, 17:40решение
оно ?
+3
Дмитрий
3 января 2020, 11:43
огромное спасибо!)
0