herança modelagem e programação orientada a objetos curso superior de tecnologia em sistemas para...

9

Click here to load reader

Upload: ana-fonseca

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

Herança

Modelagem e Programação Orientada a Objetos

Curso Superior de Tecnologia em Sistemas para Internet

Prof. Cristiano Stüpp [email protected]

Page 2: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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;

}

Page 3: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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);

Page 4: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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;

}

Page 5: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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.

Page 6: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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; }}

Page 7: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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.

Page 8: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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(); }}

Page 9: Herança Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes cristiano.nunes@metrocamp.edu.br

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(); }}