Herança
Modelagem e Programação
Orientada a Objetos
Curso Superior de Tecnologia em Sistemas para Internet
Prof. Cristiano Stüpp Nunes
[email protected]
2
Herança
 Muitas vezes, classes diferentes tem características
comuns, então, ao invés de criarmos uma nova
classe com todas essas características usamos as
características de uma classe já existente;
public class Funcionario {
public class Cliente {
private String nome;
private String endereco;
private String cod_cli;
private String nome;
private String endereco;
private String matricula;
}
}
 Para implementar tal procedimento mencionado
acima, usamos o conceito de herança.
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
3
Herança
 Herança é um mecanismo que
permite que características
comuns a diversas classes
sejam fatoradas em uma
classe base (ou superclasse);
//classe fatorada (classe base)
public class Pessoa {
private String nome;
private String endereco;
}
 A partir de uma classe base, outras classes
podem ser especificadas;
 Cada classe derivada (ou subclasse) apresenta
as características (estrutura e métodos) da classe
base e acrescenta a elas o que for definido de
particularidade para ela.
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
4
Herança
 Basicamente significa dizer que uma classe herda
os atributos e métodos de uma classe “mãe”, ou
seja, a super classe;
 Para se implementar o conceito de herança em
Java, usa-se a palavra reservada extends
 Exemplo:
public class Funcionario extends Pessoa {
private String matricula;
}
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
5
Herança em Cadeia
 Java permite que uma classe herde apenas as
características de uma única classe, ou seja, não
pode haver heranças múltiplas;
 Porém, é permitido heranças em cadeias, por
exemplo:
 se a classe Mamifero herda a classe Animal, quando fizermos a
classe Cachorro herdar a classe Mamifero, a classe Cachorro também
herdará as características da classe Animal.
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
6
Método Construtor em Herança
 Toda classe tem seu método construtor. Portanto,
em uma relacionamento de herança existem no
mínimo duas classes envolvidas, temos então
dois métodos construtores;
 Para acessarmos o método construtor da classe
que está sendo herdada usamos o super()
public class Pessoa {
public class Funcionario extends Pessoa {
private String nome;
private String endereco;
private String matricula;
public Funcionario(String n, String m) {
super(n);
matricula = m;
}
public Pessoa(String nm) {
nome = nm;
}
}
}
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
7
Método Construtor em Herança
 Podemos usar o super() para qualquer
construtor da super classe, pois o Java consegue
diferenciar os construtores por causa da
sobrecarga de métodos;
 Se o construtor da super classe não contiver
argumentos então não há a necessidade de se
usar a palavra reservada super() pois o Java
implicitamente invoca o construtor da super classe
dentro do construtor da subclasse.
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
8
Sobrescrição de Métodos
 Ao invés de uma subclasse simplesmente herdar
um método da super classe, pode-se ainda
redefinir o mesmo método da super classe dentro
da subclasse, a isso dá-se o nome de
Sobrescrição de Método (Overriding);
public class Superclasse {
public class Subclasse extends Superclasse {
public void imprime() {
System.out.println(
"Esse é o método imprime da Superclasse");
}
}
public void imprime() {
System.out.println(
"Esse é o método imprime da Subclasse");
}
}
public class SobrescricaoDeMetodos {
public static void main(String[] args) {
Superclasse superC = new Superclasse();
Subclasse subC = new Subclasse();
superC.imprime();
subC.imprime();
}
Modelagem e Programação Orientada
}
a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
9
Sobrescrição de Métodos
 Se houver a necessidade de invocar a versão
original do método da super classe dentro da
subclasse, então utiliza-se a palavra reservada
super.
public class Subclasse extends Superclasse {
public class Superclasse {
public void imprime() {
public void imprime() {
System.out.println(
"Esse é o método imprime da Superclasse");
}
super.imprime();
System.out.println(
"Esse é o método imprime da Subclasse");
}
}
}
public class SobrescricaoDeMetodos {
public static void main(String[] args) {
Superclasse superC = new Superclasse();
Subclasse subC = new Subclasse();
superC.imprime();
subC.imprime();
}
}
Modelagem e Programação Orientada a Objetos
Curso Superior em Tecnologia de Sistemas para Internet
Download

TSI_MPOO – Especialização/Generalização (Heranca)