POLIMORFISMO - Exemplos

Então teria como postar este trecho utilizando herança de classes?

Aproveitando a oportunidade, qual a diferença entre os dois trecho abaixo? (ambos foram utilizados nos posts acima):

Foo f[] = new Foo[2];

          e

Foo[] f = new Foo[2];

[quote=“Spider_Man”]Então teria como postar este trecho utilizando herança de classes?
[/quote]

public abstract class Father { // nao é necessario ser abstract

   public abstract void f();
}

public class Son1 extends Father {

   public void f() { System.out.println( "Son 1" ); }
}


public class Son2 extends Father {

   public void f() { System.out.println( "Son 2" ); }
}

class Foo {

   Foo () {

      Father f[] = new Father[2];

      f[0] = new Son1();
      f[1] = new Son2();
   }
}

nesse caso não tem diferença nenhuma, mas aqui sim:

Foo [] f1, f2, f2; // conchetes antes de tudo, declaração de 3 arrays
Foo f1[], f2, f3[]; // declaração de 2 arrays, f1 e f3

Não tem diferença nenhuma, mas a segunda forma é a padronizada e mais indicada, pela legibilidade.

Ao ler Foo[] você já entende que é um array de Foo. No primeiro caso, você só perceberia isso ao ver o f[], e numa leitura rápida poderia achar que seria um Foo simples (…)

O exemplo:

[code]class Super {
void m1() {
System.out.println(“Super”);
}
}

class Sub1 extends Super {
void m1() {
System.out.println(“Sub1”);
}
}

class Sub2 extends Super {
}

class Teste {
public static void main (String[] args) {
Super s1 = new Super();
Sub1 s2 = new Sub1();
Sub2 s3 = new Sub2();

    Super array = new Super[3];
    array[0] = s1;
    array[1] = s2;
    array[2] = s3;

    for (int i = 0; i < array.length; i++)
        System.out.print(array[i].m1());

}

Deve imprimir “SuperSub1Super”
[/code]

Vixe :cool:

[color=“green”]Spider_Man,

As duas expressões querem dizer exatamente a mesma coisa… é só vc escolher a q achou mais bonitinha e usar… :lol:

A mais usada é a segunda: [/color]

  Foo[] f = new Foo[2]; 

[color=“green”]Mas as duas funcionam viu? Espero ter ajudado. :wink: [/color]

[color=“green”]Eitaaaa… num tinha visto os posts do Matheus e do Schuenemann não… [/color] :oops: :oops: :oops: :oops: :oops:

heahea Marcela, o pessoal tem fome de posts com dúvidas :twisted: :twisted: :twisted:

e tem diferença sim galera… :joia:

[quote=“matheus”]
nesse caso não tem diferença nenhuma, mas aqui sim:

Foo [] f1, f2, f2; // conchetes antes de tudo, declaração de 3 arrays Foo f1[], f2, f3[]; // declaração de 2 arrays, f1 e f3 [/quote]

[color=“green”]E ae Matheus,

huehuehuehuehuehue… na próxima vez eu vou prestar mais atenção pra ver se tem alguém olhando o mesmo tópico q eu :wink:.

Sobre o array: nesse caso não existe diferença, como vc mesmo disse, só existe diferença se existir mais de uma variável não é isso??? [/color]

[quote=“MarcelaR”]na próxima vez eu vou prestar mais atenção pra ver se tem alguém olhando o mesmo tópico q eu :wink:.
[/quote]
nd disso, quero ver todo mundo se brigando pra responder as dúvidas no fórum haehuae

bele… é q li o seu “é só vc escolher a q achou mais bonitinha e usar” e eu quis ressaltar :joia: