herança modelagem e programação orientada a objetos curso superior de tecnologia em sistemas para...
TRANSCRIPT
Herança
Modelagem e Programação Orientada a Objetos
Curso Superior de Tecnologia em Sistemas para Internet
Prof. Cristiano Stüpp [email protected]
Modelagem e Programação Orientada a ObjetosCurso Superior em Tecnologia de Sistemas para Internet
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;
Para implementar tal procedimento mencionado acima, usamos o conceito de herança.
public class Funcionario {
private String nome; private String endereco; private String matricula;
}
public class Cliente {
private String nome; private String endereco; private String cod_cli;
}
Modelagem e Programação Orientada a ObjetosCurso Superior em Tecnologia de Sistemas para Internet
3
Herança
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.
//classe fatorada (classe base)public class Pessoa {
private String nome; private String endereco;
}
Herança é um mecanismo que permite que características comuns a diversas classes sejam fatoradas em uma classe base (ou superclasse);
Modelagem e Programação Orientada a ObjetosCurso 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 ObjetosCurso 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 ObjetosCurso 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 {
private String nome; private String endereco;
public Pessoa(String nm) { nome = nm; }}
public class Funcionario extends Pessoa {
private String matricula;
public Funcionario(String n, String m) { super(n); matricula = m; }}
Modelagem e Programação Orientada a ObjetosCurso 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 ObjetosCurso 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 void imprime() { System.out.println( "Esse é o método imprime da Superclasse"); }
}
public class Subclasse extends 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 ObjetosCurso 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 Superclasse {
public void imprime() { System.out.println( "Esse é o método imprime da Superclasse"); }
}
public class Subclasse extends Superclasse {
public void imprime() { 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(); }}