Какие члены не наследуются в дочернем классе?
Я пытаюсь ответить на следующий вопрос:
дочерний класс не наследует определенные члены родительского класса. Имя три такой член.
Я знаю, что частные члены не наследуются дочерним классам, а члены по умолчанию не наследуются вне пакета. Кто-нибудь может ответить?
редактировать:- Я считаю, что статические члены наследуются в соответствии с приведенной ниже демонстрацией
public class sup {
public static void main(String agr[]){
}
protected static int staticInt=0;
protected final int finalInt=3;
protected int protectedInt=0;
public String publicString = "";
private int privateInt=8;
}
class sub extends sup{
public void del(){
staticInt=1;
staticInt=finalInt;
}
}
5 ответов
нет-ответ, чтобы сделать случай для условия использование.
членами которого являются видимого в классе ребенка отвечает выше. члены как поля и методы (каждый имеет свое собственное пространство имен).
наследование как часть дочернего экземпляра, другой вопрос: также Невидимый частная члены "наследуются" как таковые. Static члены являются частью класса экземпляр и не наследуются (также не могут быть переопределены). Все!--3-->финал методы не могут быть переопределены.
спорные конструкторы не наследуются; вы должны определить ту же подпись снова в новом дочернем конструкторе.
другие объявления в классе могут быть определениями классов. Здесь ключевое слово static
имеет другое значение, и можно сделать очевидные утверждения о видимости/наследовании. Например, в отношении нестатических внутренних классов, которые имеют Ан <outer-class>.this
(рекурсивное понятие).
конструкторы, статические инициализаторы и инициализаторы экземпляров не являются членами и поэтому не наследуются.
из документации Oracle Java для наследование :
подкласс наследует все члены (поля, методы и вложенные классы) из своего суперкласса. конструкторы не являются членами, так что они наследуются не подклассами, а конструктором суперкласса может быть вызван из подкласса
поэтому я думаю, что вам не хватает конструкторов здесь .
Статические методы и поля также не наследуются, если они переписываются в подклассы, они просто повторно используют подпись и hide
реализация метода/поля в родительском классе.
для наследования статических полей и методов, относятся к этому обсуждение как steted Дункан, и этот отличный учебник переопределение vs скрытие
вы не можете наследовать частное поле и конструктор. вы не можете наследовать конструктор, потому что они не являются членами класса. вы можете вызвать форму конструктора супер класса, это подкласс. и вы можете также получить доступ к закрытому члену класса можно обращаться через открытый или защищенный Метод супер класса.