Conceito: Herança significa que a definição de classe pode ser baseada em outra classe existente, ou seja, a subclasse herda a classe pai, percebendo assim a reutilização do código da classe pai. A relação entre duas classes: a classe pai geralmente possui as características comuns a cada subclasse, enquanto a subclasse pode adicionar alguns métodos mais personalizados. A herança de classe é transitiva, ou seja, as subclasses podem continuar a derivar subclasses, o conceito de classe localizado no nível superior é mais abstrato, e o conceito de classes localizadas no nível mais baixo é mais concreto.
1. Defina subclasses:
Formato de sintaxe
Classe [modificador] Nome da subclasse estende o nome da classe pai {
Subclasse
}
Modificador: Padrão Protegido Privado Público
Um corpo de subclasse é um novo conteúdo exclusivo adicionado por uma subclasse baseada na herdadora do conteúdo da classe pai. Pode incluir variáveis de membros, métodos de membros, classes, interfaces, métodos de construção etc.
Por exemplo, em uma empresa, um funcionário é uma equipe contratada pela empresa e um gerente é um funcionário especial da empresa de gerenciamento. Esse tipo de funcionário especial não apenas possui os atributos e métodos de funcionários comuns, mas também alguns atributos e métodos próprios, como subsídios especiais.
O código é o seguinte:
classe pública EmpregeEClass {private String Name; // nome private int id; // Número da empresa Salário duplo privado; // departamento de cordas privadas salariais; // departamento public emprega () {} public empregeeclass (nome da string, int id, salário duplo, departamento de cordas) {this.name = name; this.id = id; this.salary = salário; this.Department = Departamento; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public int getId () {return id; } public void setId (int id) {this.id = id; } public Double getSalary () {Return Salary; } public void Setsalary (salário duplo) {this.salary = salário; } public string getDepartment () {departamento de retorno; } public void setDepartment (departamento de string) {this.department = departamento; } @Override public string tostring () {return "empregeeclass [name =" + name + ", id =" + id + ", salário =" + salário + ", departamento =" departamento + "]"; }}Este é o código para a classe de funcionários, que possui quatro atributos, nome, número, salário, departamento.
public class Managerclass estende a Emprega (Specialsalary Duplo Private; public ManagerClass () {Super ();} public ManagerClass (Nome da String, Id Id, Salário Double, Departamento de String, Especialário Double) {Super (Nome, ID, Salário, Departamento); this.SpecialSalary = Especialário; } public Double getSpecialSalary () {return specialSalary; } public void setSpecialSalary (Double Specialsalary) {this.SpecialSalary = Especialário; } @Override public string tostring () {return super.toString () + "/specialSal:" + specialSalary; }}Esta é uma classe de subclasse, gerente, com seus próprios atributos, subsídios especiais.
2. Acessibilidade da subclasse aos membros da classe dos pais
Uma subclasse pode herdar os membros da classe pai, mas o acesso aos membros da classe pai é controlado pelo recurso de acesso.
A classe dos pais e a classe infantil estão no mesmo pacote: privado não pode ser acessado diretamente, mas podemos obter o membro privado da classe pai por meio de um método de membro com um atributo de acesso público.
A classe dos pais e a classe infantil não estão no mesmo pacote: privado e os padrões não podem ser acessados diretamente, mas podemos obter o membro privado da classe pai através do método membro com propriedades de acesso público e protegido.
3. Sobrecarregamento e substituição dos métodos de membro da classe
Quando o nome da nova variável de membro definida na subclasse é a mesma que uma variável de membro na classe pai, a subclasse oculta a variável de membro correspondente na classe pai.
Uma sobrecarga ou substituição de um método de membro é um método de membro definido em uma subclasse quando o nome de um método de membro definido na classe pai é o mesmo que o nome de um método de membro na classe pai.
(1) Sobrecarga de métodos de membro
No funcionário e gerente Chestnut mencionado anteriormente, podemos definir um método de membro na classe de funcionários
public void setInfo (nome da string, int id, salário duplo, departamento de string) {this.name = new String (nome); this.id = id; this.salary = salário; this.Department = new String (departamento); }Na aula do gerente, ela pode ser definida como:
public void setInfo (nome da string, int id, salário duplo, departamento de cordas, especialização dupla) {super (nome, id, salário, departamento); this.SpecialSalary = Especialário; }Esta é a sobrecarga dos métodos de membro
(2) Substituição dos métodos de membros
Geralmente existem duas formas:
① No método do membro definido pela subclasse, primeiro chame o método de membro substituído na classe pai e adicione algumas instruções de operação.
② Nos métodos de membro definidos pela subclasse, os métodos de membro substituídos pela classe pai não são chamados, mas um grupo de declaração é reescrito. Isso permite cobertura completa da classe pai. Este método deve ser implementado quando uma operação de uma subclasse for completamente diferente da operação do objeto da classe pai.
castanha:
Na classe de objeto, existe um método de membro igual a () que determina se dois objetos são iguais e seu código é:
public boolean euqals (objeto obj) {return (this == obj); }Pode -se observar que esse método de membro é comparar se dois objetos se referem a um objeto ao mesmo tempo.
Mas agora esperamos implementar uma função que compare se o conteúdo de dois objetos do mesmo tipo são iguais. Portanto, temos uma classe plural abaixo, cada classe plural consiste em uma parte real e uma parte imaginária. A função de design pode comparar se dois números complexos são iguais. O código é o seguinte:
classe pública ComplexNumber {private duplo re; Double IM privado; public complexNumber () {re = 0.0; im = 0,0;} public complexNumber (duplo re, duplo im) {this.re = re; this.im = im; } public duplo getre () {return re; } public void setre (duplo re) {this.re = re; } public double getim () {return iM; } public void setim (duplo im) {this.im = im; } public boolean é igual (object OtherObject) {if (this == OtherObject) retorna true; if (outrobject == NULL) retorna false; if (getClass ()! = OtherObject.getClass ()) retorna false; ComplexNumber Other = (ComplexNumber) OtherObject; if ((re == Other.re) && (im == outros.im)) retorna true; mais retornar falso; } public string tostring () {string str = ""; if (re! = 0) str += re; if (im == 0) retorna str; se (im <0) str += im +"i"; else str + = " +" + iM + "i"; retornar str; } public static void main (string [] args) {complexNumber c1, c2; c1 = novo complexoNumber (2,3); c2 = novo complexoNumber (2, -3.4); if (c1.equals (c2)) {system.out.println ("(" +c1 +") == (" +c2 +")"); } else {System.out.println ("(" +c1 +") <> (" +c2 +")"); }}}O resultado é (2.0 + 3.0i) <> (2.0-3.4i)
O exposto acima é a breve discussão do entendimento principal de Java sobre a herança que o editor traz para você. Espero que todos apoiem mais wulin.com ~