Pessoal eu gostaria de um exemplo bem simples de polimorfismo e queria entender a sua finalidade.
Qual a relacao que Heranca tem com Polimorfimso?
aguardo resposta.
Pessoal eu gostaria de um exemplo bem simples de polimorfismo e queria entender a sua finalidade.
Qual a relacao que Heranca tem com Polimorfimso?
aguardo resposta.
Herança:
Pai -> Filho
O Filho “herda” do pai algumas característica.
Polimorfismo: (poli=[color=red]muitas [/color]morfismo=[color=red]formas[/color])
Ser humano pode ser: Criança, Adulto, Adolescente, Idoso, etc, mas todos são seres humanos
Pessoa pode ser Física ou Jurídica
Física ou Jurídica tem suas peculiaridades, porém são pessoas.
Veja se essa discussão
http://www.guj.com.br/posts/list/137852.java
ajuda.
Pessoal tenho uma duvida com relação a herança… tipow…
eu tenho uma Classe chamada Funcionario…
que tem o o metodo getSalarioBase;
ai eu criei um subclasse que herda de funcionario chamada FEnsinoMedio e acrescentei o método getSalario();
instanciei da seguinte forma… Funcionario func = new FEnsinoMedio();
gostaria de saber, o objeto func vai ter caracteristicas de Funcionario ou de FEnsinoMedio???
vou explicar o meu problema…
Funcionario[] func = { new FEnsinoBasico(),new FEnsinoBasico(), new FEnsinoBasico(), new FEnsinoBasico(),
new FEnsinoMedio(), new FEnsinoMedio(), new FEnsinoMedio(), new FEnsinoMedio(),
new FEnsinoSuperior(), new FEnsinoSuperior()};
eu criei esse array de funcionarios com 4 FEnsinoBasico 4 FEnsinoMedio e 2 FEnsinoSuperior todos tem um método getSalario() so que implementado de jeitos diferentes…
eu quero somar o total de todos os salarios… eu pensei em usar um for… so que ai que ta…
quando faço tipo
for( int i =0; i < func[i].length; i++ )
{
totalSalario += func[i].getSalario();
}
o metodo getSalario so esta implementado nas classes filhas e nao na classe pai…
alguem poderia me ajudar???

Você fêz como?
Foi assim?
public class FEnsinoBasico extends Funcionario {
public Double getSalario() {
return new Double(10.20);
}
}
public class FEnsinoMedio extends Funcionario {
public Double getSalario() {
return new Double(30.40);
}
}
public class FuncionarioTest {
public static void main(String... args) {
Funcionario[] funcionarios = new Funcionario[]{new FEnsinoMedio(), new FEnsinoBasico()};
for(Funcionario f : funcionarios ) {
System.out.println(f.getSalario());
}
}
}
P.S Este código exemplo foi construido com o intuito de melhorar a comunicação entre os participantes (nós).
flws
o metodo getSalario so esta implementado nas classes filhas e nao na classe pai…
Você tem de declarar o método getSalario na classe pai ou como “abstract”:
public abstract double getSalario();
ou então você implementa o método getSalario na classe pai, mas faz com que ele lance uma exceção se for diretamente chamado.
public double getSalario() { throw new RuntimeException ("Não implementado"); }
No seu caso, é melhor declarar como ‘abstract’.
Ai ja consegui resolver o meu problema…
Quando instancio um variavel com a referencia de uma classe filha… o objeto criado tera todos os métodos da classe pai… e se metodos foram incluidos nas classes filhas… eles nao serao enxergados… mas
caso a classe tenha o metodos das classes filhas ( a final as filhas herdaram da pai) esses métodos estaram implementados cada um com as caracteristicas da referencia…
:shock:
Desculpem, esqueci de enviar a class mais importante da questão. :(
public abstract class Funcionario {
public abstract Double getSalario();
}
flws
enantiomero
heheh valeu…
eu n tinha reparado isso… eu nao tinha declarado na classe pai o metodo getSalario()…
e entendi tb q quando eu chamar o objeto: por exemplo
Funcionario func = new FEnsinoMedio();
func.getSalario();
esse objeto fucn tera as implementacoes do FEnsinoMedio neh???
hahaha puts… eu tava me matando aki para tentar entender o que tava acotnencendo…
valeu galera!!!
Eu posso declarar um metodo abstract dentro de uma classe publica???
tipo… so aquele método eu n quero que seja inicializado… caso a classe seja instanciada… so quero q esse metodo seja herdado e implementado em outras classes…
pode isso???
faz sentido ou eh sempre bom declarar abstract na classe toda?
Eu posso declarar um metodo abstract dentro de uma classe publica???
tipo… so aquele método eu n quero que seja inicializado… caso a classe seja instanciada… so quero q esse metodo seja herdado e implementado em outras classes…
pode isso???faz sentido ou eh sempre bom declarar abstract na classe toda?
Pode. Faz muito sentido.
VALEUUUUUUUUUUUUU