Концепция: наследование означает, что определение класса может быть основано на другом существующем классе, то есть подклассу наследует родительский класс, тем самым реализуя повторное использование кода родительского класса. Взаимосвязь между двумя классами: родительский класс обычно имеет характеристики общих для каждого подкласса, в то время как подкласс может добавить несколько более персонализированных методов. Наследование класса является переходным, то есть подклассы могут продолжать получать подклассы, концепция класса, расположенная на верхнем уровне, является более абстрактной, а концепция классов, расположенных на нижнем уровне, является более конкретной.
1. Определите подклассы:
Синтаксический формат
[Модификатор] Имя подкласса класса расширяет имя родительского класса {
Подкласс
}
Модификатор: государственная частная защита по умолчанию
Корпус подкласса - это новый уникальный контент, добавленный подклассом, основанный на наследстве содержания родительского класса. Он может включать переменные члена, методы членов, классы, интерфейсы, методы строительства и т. Д.
Например, в компании сотрудник является сотрудником, нанятым компанией, а менеджер является специальным сотрудником в управленческой компании. Этот тип специального сотрудника имеет не только атрибуты и методы обычных сотрудников, но и некоторые собственные атрибуты и собственные методы, такие как специальные пособия.
Код заключается в следующем:
Public Class EmployeEclass {private String name; // Название частного идентификатора INT; // номер компании частная двойная зарплата; // зарплата частная строковая отдел; // Департамент public kecilyeeclass () {} public employeeClass (название строки, идентификатор int, двойная зарплата, строковое отделение) {this.name = name; this.id = id; это .salary = зарплата; this.department = отдел; } public String getName () {return name; } public void setName (string name) {this.name = name; } public int getId () {return id; } public void setId (int id) {this.id = id; } public double getAlary () {return Parlary; } public void setSalary (двойная зарплата) {this.salary = зарплата; } public String getDepartment () {return Department; } public void setDepartment (String Department) {this.Department = Департамент; } @Override public String toString () {return "employeEclass [name =" + name + ", id =" + id + ", parlary =" + зарплата + ", департамент =" + департамент + "]"; }}Это код для класса сотрудников, который имеет четыре атрибута, имя, номер, зарплата, отдел.
Public Class ManagerClass Extends employeEclass {private Double SpecialSalary; public ManagerClass () {super ();} public ManagerClass (String name, INT ID, двойная зарплата, отделение строк, двойное специальное предложение) {super (имя, идентификатор, зарплата, отделение); это. SpecialSalary = SpecialSalary; } public double getSpecialSalary () {return SpecialSalary; } public void SetSpecialSalary (Double SpecialSalary) {this.specialSalary = SpecialSalary; } @Override public String toString () {return super.toString () + "/specialSal:" + specialSalary; }}Это подкласс, класс менеджера, со своими собственными атрибутами, специальными пособиями.
2. Доступность подкласса для родителей -членов класса
Подкласс может наследовать членов родительского класса, но доступ к членам родительского класса контролируется функцией доступа.
Родительский класс и класс ребенка находятся в одном пакете: частный не может быть доступен напрямую, но мы можем получить частного члена родительского класса с помощью метода участника с атрибутом публичного доступа.
Родительский класс и класс ребенка не в том же пакете: частные и дефолты не могут быть доступны напрямую, но мы можем получить частного члена родительского класса с помощью метода участника с публичными и защищенными свойствами доступа.
3. перегрузка и перезагрузка методов члена класса
Когда имя новой переменной элемента, определенная в подклассе, такое же, как и членская переменная в родительском классе, подкласс скрывает соответствующую переменную члена в родительском классе.
Перегрузка или переопределение метода члена - это метод члена, определенный в подклассе, когда имя метода члена, определенное в родительском классе, такое же, как и имя метода члена в родительском классе.
(1) Перегрузка методов участников
В «Каштане и менеджере», упомянутым ранее, мы можем определить метод участника в классе сотрудников
public void setInfo (имя строки, идентификатор int, двойная зарплата, строковое отделение) {this.name = new String (name); this.id = id; это .salary = зарплата; this.department = new String (отдел); }В классе менеджера это можно определить как:
public void setInfo (название строки, INT ID, двойная зарплата, отдел строк, двойной специальное предложение) {Super (имя, идентификатор, зарплата, отделение); это. SpecialSalary = SpecialSalary; }Это перегрузка методов членов
(2) переопределение методов членов
Обычно есть две формы:
① В методе участника, определенном подклассом, сначала вызовите метод переопределенного члена в родительском классе, а затем добавьте некоторые операторы операций.
② В методах участника, определенных подклассом, методы участника, переопределенные родительским классом, не вызываются, но группа заявлений переписывается. Это обеспечивает полное покрытие родительского класса. Этот метод должен быть реализован, когда операция подкласса полностью отличается от работы объекта родительского класса.
каштан:
В классе объекта существует метод члена Equals (), который определяет, равны ли два объекта, и его код:
public boolean euqals (объект obj) {return (this == obj); }Можно видеть, что этот метод члена состоит в том, чтобы сравнить, ссылаются ли два объекта к одному объекту одновременно.
Но теперь мы надеемся реализовать функцию, которая сравнивает, является ли содержимое двух объектов одного типа равным. Таким образом, у нас есть класс множественного числа ниже, каждый класс множественного числа состоит из реальной части и воображаемой части. Функция дизайна может сравнить, равны ли два комплексных числа. Код заключается в следующем:
Public Class ComplexNumber {Private Double Re; частный двойной IM; public ComplexNumber () {re = 0,0; im = 0,0;} public oclectryNumber (double re, double im) {this.re = re; this.im = im; } public double getRe () {return re; } public void setre (double re) {this.re = re; } public double getim () {return im; } public void setim (double im) {this.im = im; } public boolean equals (object orethobject) {if (this == Другое Объект) вернуть true; if (ore object == null) вернуть false; if (getClass ()! = Другое obhject.getClass ()) вернуть false; ComplectNumber dise = (ComplectNumber) DoreObject; if ((re == Другое.re) && (im == Другое.im)) вернуть true; иначе вернуть ложь; } public String toString () {string str = ""; if (re! = 0) str += re; if (im == 0) return str; if (im <0) str += im +"i"; else str + = " +" + im + "i"; вернуть Str; } public static void main (string [] args) {complexnumber c1, c2; C1 = новый комплекс (2,3); C2 = новый комплекс (2, -3,4); if (c1.equals (c2)) {System.out.println ("(" +c1 +") == (" +c2 +")"); } else {System.out.println ("(" +c1 +") <> (" +c2 +")"); }}}Результат (2,0 + 3,0i) <> (2,0-3,4i)
Вышесказанное - краткое обсуждение основного понимания Java о наследстве, которое редактор приносит вам. Я надеюсь, что все будут поддерживать wulin.com больше ~