2011-05-11 2 views
3

Je suis débutant en Java, donc, je suis désolé si la question sera trop simple pour vous. Est-ce que quelqu'un pourrait m'expliquer ce qu'est le polymorphisme en Java? Je ai juste besoin morceau de code qui le décrit simplement.exemple de polymorphisme en Java

Merci.

+0

En savoir polymorphisme d'ici: http://download.oracle.com/javase/tutorial/java/IandI/polymorphism.html –

+0

Je pense que tout bon livre vous répondre ..... – Pushpendra

+0

La Bible est le canonique Good Book – Daniel

Répondre

3

On dirait des devoirs pour moi, mais je m'ennuie et Java me rend nostalgique.

List<A> list = new ArrayList<A>(); 
list.add(new A()); 
list.add(new A()); 
list.add(new B()); 

public void printAll() { 
    for(A i : list) { 
     System.out.println(i.print()); 
    } 
} 

class A { 
    public String print() { 
     return "A"; 
    } 
} 

class B extends A { 
    @Override 
    public String print() { 
     return"B"; 
    } 
} 

La sortie ressemblerait à ceci:

A 
    A 
    B 

La partie est polymorphique lorsque le code est exécuté différent pour le même appel de méthode. La boucle fait la même chose à chaque fois, mais différentes méthodes d'instance peuvent être appelées.

2

Regardez le JDK lui-même. Vous verrez le polymorphisme dans beaucoup d'endroits, par exemple si vous regardez les collections de java.util. Un type de référence d'interface java.util.List peut se comporter comme une ArrayList ou une LinkedList, selon le type d'exécution que vous lui attribuez.

2

Il existe plusieurs tutoriels comme indiqué précédemment. Voici un exemple rapide, je l'espère est exacte (c'est comme répondre à un test)

polymorphisme Parametric La même classe définit plus d'une fonction avec le même nom, mais un ensemble de paramètres différents. Les numéros de paramètres et/ou le type permettent d'acheminer l'appel vers la bonne fonction.

class PolyTest1 { 
    private void method1(int a) {} 
    private void method1(String b) {} 
} 

polymorphisme d'héritage Une classe peut redéfinir une de ses méthodes de la classe parent. Le type d'objet permet d'appeler la bonne fonction.

public class PolyTest2 extends PolyTest1{ 

    private void method1(String b) {} 
}