Как и в C++, защищенные члены становились частными при частном наследовании. поэтому я очень смущен тем, что происходит в Java. здесь спецификаторы доступа остаются прежними или что? подобно
если предположить, что приведенный ниже код существует, то теперь Шива все равно останется защищенным внутри класса B? можем ли мы снова использовать его в классе C?
Любая помощь будет оценена.
package package1
class classA
{
protected shiva;
}
////////////////////////
import package1
package package2
class classB extends classA
{}
//////////////////////
import package2
class classC extends classB
{}




Да, вы можете использовать защищенное поле в подклассе.
Модификатор защищенного доступа находится между общедоступным и модификатором доступа по умолчанию. Доступ к нему возможен вне пакета, но только через подклассы.
Обратитесь к этой ссылке для большей ясности.
https://www.tutorialride.com/core-java/inheritance-access-modifiers-in-java.htm
Так что да, вы можете использовать его в подклассах.
Да, вы можете использовать его.
│ Class │ Package │ Subclass │ Subclass │ World
│ │ │(same pkg)│(diff pkg)│
────────────┼───────┼─────────┼──────────┼──────────┼────────
public │ + │ + │ + │ + │ +
────────────┼───────┼─────────┼──────────┼──────────┼────────
protected │ + │ + │ + │ + │
────────────┼───────┼─────────┼──────────┼──────────┼────────
no modifier │ + │ + │ + │ │
────────────┼───────┼─────────┼──────────┼──────────┼────────
private │ + │ │ │ │
+ : accessible blank : not accessible
Дополнительные сведения см. в ответах на этот вопрос здесь. Мне кажется похоже.
В Java наследование похоже на общедоступное виртуальное наследование C++. Таким образом, все модификаторы доступа останутся прежними.