27 setembro 2009

6- Propriedades de POO: HERANÇA

Propriedade dos objetos que permite a criação de uma herança entre eles, onde os descendentes herdam o código e estruturas dos seus ancestrais. Quando uma classe herda da outra, a subclasse herda da superclasse.
Em java, diz que a superclasse é mais generalizada e a sub-classe é mais específica. É dito que a sub-classe estende a superclasse. Um relacionamento de herança significa que a sub-classe herdará os membros da superclasses.
A Sub-classe pode:
Adicionar novos atributos
Adicionar novos métodos
Sobrepor um método existente
A principal vantagem da herança em L.O.O. está na reutilização do código. Em java, usa-se a palavra "extends".
Exemplo:
//arquivo Pessoa.java
public class Pessoa {
String nome;
int idade;
public Pessoa(String nome, int idade){
this.nome = nome;
this.idade = idade;
}
public String imprimir(){
return("\nMeu nome é:"+nome+"e minha idade é:"+idade);
}
}
//arquivo Aluno.java
public class Aluno extends Pessoa {
double mediafinal;
public Aluno(String nome1, int idade1, double media){
super(nome1, idade1);
mediafinal = media;
}
public String retornaMedia(){
return("Sou aluno da UFERSA e minha média final foi:"+mediafinal);
}
}
//arquivo Funcionario.java
public class Funcionario extends Pessoa {
int matricula;
double salario;
public Funcionario(String nome1, int idade1, int mat, double sal){
super(nome1, idade1);
matricula = mat;
salario = sal;
}
public String retornaFrase(){
return("\nSou funcionário da UFERSA e me nome é:"+nome);
}
}
//arquivo Teste_Heranca.java
public class Teste_Heranca {
public static void main(String[] args) {
Pessoa p1 = new Pessoa ("maria", 40);
Funcionario f1 = new Funcionario ("Jose", 45, 003, 250);
Aluno a1 = new Aluno("Ana", 21, 9.5);
System.out.println(p1.imprimir());
System.out.println(f1.imprimir());
System.out.println(f1.retornaFrase());
System.out.println(a1.imprimir());
System.out.println(a1.retornaMedia());
}
}
A palavra super referencia a classe da qual se originou. Sendo assim, "super.aumetaSalario" invoca o método aumentaSalario da superclasse. Herança Simples: Um objeto herda as características de uma única classe. Uma subclasse tem somente uma superclasse.
Exemplo:

//arquivo empregado.java
class empregado{
String nome, secao;
double salario;
public empregado(String n, String s, double sal){
nome = n;
secao = s;
salario = sal;
}
public void aumentaSalario(double percentual){
salario = salario + salario*(percentual/100);
}
}
//arquivo gerente.java
class gerente extends empregado{
String secretaria;
public gerente(String n, String s, double sal, String sec){
super.aumentaSalario(porcentagem)+200;
}
}
//arquivo pessoa.java
class pessoa{
String nome, data_nascimento;
char sexo;
...
}
//arquivo professor.java
public class professor extends pessoa{
String contato, email;
...
}
//arquivo aluno.java
public class aluno extends pessoa{
String matricula;
...
}

Herança Múltipla: Quando uma subclasse herda características de mais de uma classe.
Java não suporta implementação de herança múltipla

0 comentários:

Postar um comentário