Во-вторых, наследование
Когда присутствие одних и тех же свойств и поведения из множества классов, Извлеченный содержание к одному классу, то множество классов не нужно определить те свойства и поведение, и экстрагируют только образуют класс наследования.
-
-
Улучшение масштабируемости кода .
-
Произведены отношения между классами, учится предпосылка полиморфный .
[ Править ] родительский класс {
...
}
[ Править ] Класс подкласс расширяет родительский {
...
}
-
-
Хотя подкласс наследует родительский класс частные (частные) членов, но подкласса не могут наследовать закрытым членам прямой доступ и могут быть доступны через Get / Set методов, унаследованных. Как показано на рисунке:
Мы говорим весь член родительского класса переменные наследуются подклассы, так что если член класса ребенка переменной родителя появляется с тем же именем, что будут?
Вывод:
(1) Когда переменная приватизации член класса родителя, в подклассе не прямой доступ, это никак не влияет ли то же самое имя, если вы хотите получить доступ к закрытым переменным-членам родительского класса, родительский класс может получить только / комплект метод доступа;
Формат :. Супер имя переменной-члена родительского класса
Примечание: Хотя мы можем различать между отцом и сыном то же имя переменной-члена класса, но реальное развитие, мы не рекомендуем этого делать.
Мы говорим, что все подклассы родительского класса наследуют, но когда метод наследуются подклассами, подклассы, которые реализуют оригинальный родительский класс не подходит для подкатегорий, как это сделать?
1. @ Override: написано в указанном выше способе обнаружения действительного права не могут быть перезаписаны. Этот комментарий даже не писать, пока отвечают требованиям, но и правильный подход перезаписаны. Бронирование рекомендуется
2. должен гарантировать , что класс между отцом и сыном одноименного метода, список параметров является то же самое .
Примечание : Если тип возвращаемого значения основных типов данных и пустота, она должна быть такой же ,
4. разрешения подкласса метод должен быть больше или равен] [родительский процесс модификатора разрешения .
5. Несколько специальный метод не может быть переписан
-
Статические методы не могут быть переопределены
-
В другом частном подклассу невидимый метод не может быть переписан
-
Окончательные методы не могут быть переопределены
Советы: При переопределении, используйте метод член супер родительский класс , представляющий метод члена вызывает родительский класс.
При создании отношения между классами, во всех типах методов строительства, но и то, что влияет на это?
-
Так подклассы не могут наследовать конструктор родительского класса является.
-
Роль конструктора для инициализации переменных экземпляра подкласса наследуют все переменные члены из родительского класса
Так инициализировать подкласс процесса, вы должны сначала выполнить инициализацию родительского класса действия. Конструктор подкласса по умолчанию , представляет собой пример способа инициализации называется родительский класс, переменные члены родительского класса инициализируется , прежде чем они могут быть использованы для подкласса.
super()
Если конструктор класса родителя без аргументов не то, как это сделать?
Решение: В суб-конструктор класса с супер (список аргументов), показал, называть параметры конструктора родительского класса для решимостью.
Вывод:
Подкласс процесс создания экземпляра объекта должен быть завершена инициализацией унаследованной от экземпляра переменных - членов родительского класса, этот процесс через экземпляр родительского класса метод инициализации вызовы для завершения.
-
супер (): указывает на отсутствие метода инициализации аргументов экземпляра не вызвать родительский класс, требует родительский класс должен иметь параметры конфигурации, и могут быть опущены;
-
супер (список аргументов): Указывает метод инициализации параметров экземпляра с именем отца, когда отец не конструктор без аргументов, конструктор подкласса первой строки должно быть написано супер (список аргументов) явного вызова, который родитель параметры конфигурации (на самом деле, является примером, соответствующим начальным конструктора вызова метода)
-
Первая линия супер () и супер (список аргументов) может появиться только в конструкторе подкласса
Это указывает на то, что класс не может быть унаследован, не подклассы
2, способы модификации
Это указывает на то, что этот метод не может быть переопределен подклассами
3, Constant заявление
Если переменный элемент с окончательной модификацией, метод не установлен, и должны быть инициализирован (или явно назначен или назначен в блоке инициализации, переменный экземпляр может быть назначены в конструкторе)
это представляет текущий объект ссылки (значение адреса), которые владеют объектные ссылки.
-
-
Примеры такого подхода : что объект для вызова метода, то есть, кто звонит, который представляет это на.
1, это. Имя переменной член
2, это. Метод член
Когда вы называете себя членом текущих методов объекта, вы можете добавить «это.», Он может быть опущен, фактическое развитие опущены
. 3, это () или этот (список аргументов)
Когда присутствует необходимость вызвать конструктор другого, может быть использован в этой форме.
Требования:
Если класс объявляет конструктор п, существует не более п - 1 конструктор используется в «этом списке аргументов ([])», в противном случае бесконечный цикл будет происходить рекурсивный вызов
Доступ к переменным-членам родительского класса в подклассе, особенно когда переменные-члены с тем же именем, как подкласс переменной-члена класса родителя.
(. 3) супер () или супер (список аргументов)
В конструкторе подкласса первой линии , для указания , которые вызвать конструктор родительского класса (инициализация метода является примером этой конструкции в основном соответствует)
супер (), и это () должна быть первой строкой в конструкторе, он не может происходить одновременно.
-
И это не супер
-
В конструктора, блоки кода, метод используется, если есть переменная, сначала проверить, является ли это локальная переменная объявлена в текущем блоке,
-
-
Если текущий класс не найден, он будет искать родительский класс (не частный, кросс-пакет не может быть по умолчанию)
-
-
это : представитель текущих ссылок на объекты .
-
При просмотре этих переменных-членов и методов-членов, начиная с текущего класса находке, ни один родитель не найдет из (не частный, а не кросс-пакет по умолчанию).
-
Но это () или этот (список аргументов) найдет в этой категории
-
-
Супер : от имени родительского класса пространства хранения идентификатора (это может быть понято как указание на его отец).
-
При поиске через переменные-члены супер и методов-членов, непосредственно из родительского класса пространства (включает в себя родительский класс наследует родительский класс), чтобы найти
-
супер () или супер (список аргументов) только найти от прямого родителя
-
Можно получить доступ только родительский класс виден в подклассы по супер (не частные, кросс-пакет не может быть по умолчанию)
-
Примечание: супер , и это не может произойти в статическом и статическом блоке кода, и это потому , что наличие супер объектов в
(1) статический член класса переменное явное присваивание
(2) статический оператор кода в блоке
Весь класс инициализируются только один раз, если инициализация подкласса, обнаружил, что родительский класс не инициализирован, он будет первым инициализировать родительский класс.
Вывод:
Каждый класс имеет метод инициализации класса <в clinit> () метод, а затем инициализацию подкласса, обнаружил , что , если родительский класс не инициализирован и загружен, будет сначала загрузить и инициализировать родительский класс, затем загрузку и инициализацию подклассов. Класс, только инициализируется один раз.
Примеры способов инициализации способа их, состоит из четырех частей:
(1) супер () или супер (список аргументов) здесь выбрать, посмотрите на первой строке исходного конструктора это не так, я не сделал запись, супер по умолчанию ()
(2) не-статические переменные экземпляра присваивания дисплея
(3) нестатический блок
(4), соответствующий конструктор кода
Специальное примечание: где (2) и (3) в сочетании с тем, (1) константой в передней части (4) должно быть в конечной поверхности
ИСПОЛНЕНИЕ:
-
Когда вы создаете объект, он будет реализован,
-
Что вызывает конструктор, это метод инициализации экземпляра, соответствующий
-
При создании объекта подкласса, экземпляр соответствующего инициализации родительского класса будет выполняться первым, реализация которых, например метода инициализации класса родительского, см использованием супер () или супер (список аргументов)
Вывод:
инициализация класса, безусловно, имеет приоритет над инициализации экземпляра.
Класс инициализируется только один раз.
Инициализирует экземпляр создается каждый раз, когда объект должен быть выполнен.