Какие члены не наследуются в дочернем классе?

Я пытаюсь ответить на следующий вопрос:

дочерний класс не наследует определенные члены родительского класса. Имя три такой член.

Я знаю, что частные члены не наследуются дочерним классам, а члены по умолчанию не наследуются вне пакета. Кто-нибудь может ответить?

редактировать:- Я считаю, что статические члены наследуются в соответствии с приведенной ниже демонстрацией

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 (рекурсивное понятие).


с JLS для члена класса

конструкторы, статические инициализаторы и инициализаторы экземпляров не являются членами и поэтому не наследуются.


из документации Oracle Java для наследование :

подкласс наследует все члены (поля, методы и вложенные классы) из своего суперкласса. конструкторы не являются членами, так что они наследуются не подклассами, а конструктором суперкласса может быть вызван из подкласса

поэтому я думаю, что вам не хватает конструкторов здесь . Статические методы и поля также не наследуются, если они переписываются в подклассы, они просто повторно используют подпись и hide реализация метода/поля в родительском классе.

для наследования статических полей и методов, относятся к этому обсуждение как steted Дункан, и этот отличный учебник переопределение vs скрытие


конструкторы и статические инициализаторы и инициализаторы экземпляра.


вы не можете наследовать частное поле и конструктор. вы не можете наследовать конструктор, потому что они не являются членами класса. вы можете вызвать форму конструктора супер класса, это подкласс. и вы можете также получить доступ к закрытому члену класса можно обращаться через открытый или защищенный Метод супер класса.