В этой статье описывается наследство объектно-ориентированного программирования Java. Поделитесь этим для вашей ссылки, следующим образом:
Наследование: специальный класс обладает всеми свойствами и поведением общего класса.
Пособия по наследству:
1. Улучшенная повторная способность кода
2. Пусть класс имеет отношения с классом раньше, и только с этими отношениями могут быть полиморфные характеристики. Наследство - это связь между классом и классом перед ним.
Примечания:
1. Ява поддерживает только одиночное наследование, а не множественное наследство. Поскольку множественное наследство имеет риски безопасности: когда несколько родительских классов определяют одну и ту же функцию, но функции различны, подкласс не знает, какой из них запускать.
2. Когда детский класс наследует родительский класс, он наследует все методы и свойства родительского класса и может использоваться напрямую.
3. Java поддерживает многослойное наследство, то есть отношения между внуком-отцом
Грамматика:
[Модификатор класса] Имя подкласса класса расширяет имя родительского класса {оператор;}Например:
класс Pserson {int age; String name; public void speak () {System.out.println ("Привет, мир!"); }} // наследуйте класс человека, наследуйте все методы и атрибуты ученика родительского класса расширяет Pserson {public void neamo () {System.out.println ("Хорошее обучение!"); }} // Унаследовать класс человека, наследуйте все методы и атрибуты работника родительского класса Extens Pserson {public void work () {System.out.println ("Хорошая работа!"); }}Как использовать функции в системе наследования (см. Документацию API):
Проверьте функции родительского класса и создайте объекты подкласса для использования функций
Эти три сценария часто встречаются в процессе наследования:
1) переменная с тем же именем
1. Если подкласс имеет непреднамеренную переменную члена с одной и того же именем, подкласс получает доступ к переменной этого класса и использует это; Подкласс обращается к переменной с одинаковой и тем же именем в родительском классе и использует Super.
2. Это представляет собой ссылку на объект этого класса
3. Super представляет ссылку на объект родительского класса (использование такое же, как и это)
2) Функции с тем же именем
1. Если подкласс появляется функция точно такая же, как и родительский класс (имя и параметры функции одинаковы), когда объект подкласса вызывает функцию, будет запущено содержимое функции подкласса. Функции родительского класса будут перезаписаны (также называемые переписыванием).
2. Перепишите определение: когда подкласс наследует родительский класс, следует функциям родительского класса и входит в подкласс. Однако, хотя подкласс имеет эту функцию, содержание функции не соответствует родительскому классу. В настоящее время нет необходимости определять новую функцию, но использовать функцию переопределения, сохранить определение функции родительского класса и переписать содержимое функции.
3. Примечания об перезаписи (перезапись):
<1> Подклассы переопределяют родительский класс. Вы должны убедиться, что разрешения детского класса превышают или равны разрешениям родительского класса до наследства, в противном случае компиляция потерпит неудачу. (public> Не пишите риторические ключевые слова> частные)
<2> Статический может охватить только статическое
<3> Перегрузка: Посмотрите только на список параметров функции с тем же именем и переписыванием: метод класса родительского родителя должен быть точно таким же (имя функции и список параметров)
Class fu {// public void show () Когда родительский класс show (), он будет точно таким же, как и функция подкласса. Функция шоу родительского класса будет переписана Public Void Show (String name) // Функция шоу родительского класса отличается от подкласса (список параметров отличается), поэтому функция шоу родительского класса не будет переписана {System.out.println (name); }} Class Zi Extends fu {public void show () {System.out.println ("zi"); }} класс jicheng {public static void main (string [] args) {zi z1 = new zi (); z1.show ("nihao"); // Функция шоу родительского класса будет вызвана}}3) Конструктор
1. При инициализации объекта подкласса также будет работать конструктор родительского класса, потому что первая строка конструктора подкласса имеет неявный оператор Super () по умолчанию.
2. Super () будет получить доступ к конструктору полых параметров в родительском классе, а первая строка всех конструкторов в подклассе - Super () по умолчанию
3. Причина, по которой подклассы должны получить доступ к конструктору родительского класса
<1> Поскольку подкласс данных в родительском классе можно получить напрямую, подкласс должен сначала увидеть, как родительский класс инициализирует данные. Следовательно, когда подкласс инициализируется, он сначала обращается к конструктору родительского класса по умолчанию.
<2> Если вы хотите получить доступ к конструктору, сформулируемому родительским классом или конструктором, родительский класс которого не имеет пустых параметров, вы можете сформулировать его путем вручную определяя супер оператор.
<3> Конечно, первая строка конструктора подкласса также может быть указана вручную для доступа к конструктору этого класса, но, по крайней мере, один из конструкторов в подклассе будет получить доступ к конструктору родительского класса.
класс fu {string name; int возраст; Fu () {System.out.println ("hello fu");} fu (string name) {System.out.println (name); } Fu (string name, int age) {this.name = name; this.age = возраст; System.out.println ("name:"+name+", возраст:"+age); }} Class Zi Extens Fu {//zi() atystem.out.println("hello Zi ");} По умолчанию, конструктор без параметра Zi () родительского класса будет вызоваться первым. Super ("Zhangsan", 20); // вручную использовать супер оператор для указания конструктора родительского класса для получения непредодежной информации системы родительского класса. }} class test {public static void main (string [] args) {zi z1 = new zi (); }}Пример исключения конструктора:
Запишите результаты программы
класс Super {int i = 0; public super (String s) {i = 1; }} класс демонстрация расширяет Super {public demo (String s) {i = 2; } public static void main (string [] args) {demo d = новая демонстрация ("да"); System.out.println (di); }} // Компиляция не удалась, потому что конструктор с пустыми параметрами отсутствовал в родительском классе. // или подкласс должны указать конструктор в родительском классе, который будет вызван через супер оператор.Перепишите и перегружены примеры:
класс демонстрация {int show (int a, int b) {return 0;}}Следующие функции могут существовать в подклассе демо.
A.public int show (int a, int b) {return 0;} // Да, перезапись.
B.private int show (int a, int b) {return 0;} // Нет, разрешений недостаточно.
C.private int show (int a, long b) {return 0;} // Да, это не такая же функция, как родительский класс. Никакое покрытие не является эквивалентным для перегрузки.
D.public Short Show (int a, int b) {return 0;} // Нет, потому что эта функция не может появиться в том же классе, что и в данной функции, или в классе родительского ребенка.
E.static int show (int a, int b) {return 0;} // Нет, статический может только перезаписать статику. <br> <br> Таким образом, подкласс позволяет переписать и перегружать и перегружать.
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Введение и расширенное учебное пособие по объектно-ориентированному программам Java», «Учебное пособие по структуре данных Java и алгоритм», «Суммарной навыки Java Dom Node», «Суммируют навыки работы навыков операции Java File File и Directory» и «Summary of Java CACEE CACEE».
Я надеюсь, что эта статья будет полезна для всех Java Programming.