Я нашел следующую программу Озадачивающий:Расширение частного класса в Java
package package1;
public class Main {
private static class A { }
public static class B extends A { }
}
// ----------------
package package2;
public class Test {
public static void main(String[] args) {
Main.B b = new Main.B();
}
}
Почему Java позволяет общественный класс B
расширить частный класс A
? На других языках, например. Класс C# может распространять только частный класс, когда он является частным.
Можете ли вы предоставить какой-либо сценарий, когда расширение частного класса может быть полезным?
Другой вопрос, но правильный ответ: http://stackoverflow.com/questions/6987907/access-modifiers-for-inner-classes – BackSlash
Если вы хотите использовать реальный прецедент, проверьте, почему существует 'java.lang. AbstractStringBuilder' в Oracle JDK. Это (package-) частный класс, используемый для обработки всей общей логики для 'StringBuffer' и' StringBuilder'. Все методы написаны в этом классе, и оба подкласса просто называть 'super' на них (для объяснения документации в обоих случаях и' synchronized' в случае 'StringBuffer'). Это позволяет писать логику только один раз и при этом представлять пользователю два разных API. –