Если я вас правильно понимаю, вы говорите, что я должен иметь возможность написать:
public class Foo
{
public int bar()
{
return 1;
}
}
public class Foo2 extends Foo
{
private int bar()
{
return 2;
}
public int barBar()
{
return bar();
}
}
public static void main(String[] args())
{
Foo2 foo2=new Foo2();
System.out.println(foo2.bar());
System.out.println(foo2.barBar());
}
Тогда, если я создам экземпляр класса Foo2 и вызов bar из класса, он должен вызватьFoo2.bar, поэтому я должен вернуться к 2, но если я вызову bar из-за пределов класса, он должен вызвать Foo.bar, чтобы я вернулся 1.
То есть, результат вышеприведенной программы должен быть:1 2
Ну, так как это вопрос о дизайне языка, я думаю, простой ответ: «Потому что именно так дизайнеры Java решили это сделать».
реальный вопрос в том, почему вы хотите, чтобы он вел себя так, как вы описали?У вас есть приложение, где это было бы полезно?Мне кажется, что это просто сбивает с толку.