2015-01-17 18 views
5

Sto guardando questo video e alla 2.52 volta fornisce un esempio. Dice Shape può essere un Interface o una classe astratta e ci sono altre 2 classi vale a dire Triangle e Circle. Shape sta avendo un metodo di disegno.Perché questo è chiamato polimorfismo?

Ora dice:

Shape shape=new Triangle(); 
shape.draw(); 

Shape shape=new Circle(); 
shape.draw(); 

e sostiene che si tratta di polimorfismo.

Ma per quanto ne so, il polimorfismo può essere eseguito sia in overloading del metodo che in override del metodo come indicato in questo article.

Qualcuno può per favore dire che l'esempio dato nel video è davvero polimorfismo? Grazie in anticipo in qualsiasi tipo di aiuto.

+2

Il polimorfismo è dove una classe genitore può essere un modello per molti oggetti figlio. Un triangolo e un cerchio sono entrambi una forma e condividono caratteristiche comuni, come l'area della superficie. Una persona è una classe genitore, e maschio o femmina sono gli oggetti figli è un altro esempio di polimorfismo. –

+2

È polimorfismo perché 'Shape' è la super classe. – Shahar

+0

Non preoccuparti. Ti ho dato un upvote perché in realtà ho pensato che fosse una buona domanda. Benvenuto in Stack Overflow. Imparare le nostre regole è un processo e scivolare verso l'alto è umano, specialmente se sei nuovo. –

risposta

0

Esistono diversi modi per scrivere strutture polimorfiche in Java. Il polimorfismo è semplicemente "la capacità di creare una variabile, una funzione o un oggetto che ha più di una forma".

È un polimorfismo perché il metodo draw(), apparentemente nella classe padre Shape, viene anche sovrascritto da più classi child: Triangle e Circle. Quindi draw() ha più di una forma: le forme Circle e Triangle.

Vedi http://howtodoinjava.com/2013/07/15/what-is-polymorphism-in-java/

0

Polymorphism significa uno stato di avere molte forme o la capacità di assumere forme diverse. Con questo in mente, una forma può assumere molte forme, come un triangolo o un cerchio. Queste forme avrebbero proprietà condivise e sono codificate e utilizzate come tali. Come altro esempio per capire meglio, puoi avere una persona e una persona può avere più forme: maschio e femmina.

public abstract class Person { 
    private String name; 
    private int age; 
    //additional code - functionalities that children classes share 
} 

public class Male extends Person { 
    //fields and functionalities that males only have 
} 

public class Female extends Person { 
    //fields and functionalities that females only have 
} 

È possibile quindi creare il genere che si desidera attraverso dinamica vincolante:

Person male = new Male(); 
Person female = new Female(); 

Per rispondere alla tua domanda, sì, l'esempio fornito a voi è davvero polimorfismo.

0

Sia il triangolo che il cerchio sono ereditati dalla classe Shape. La classe Shape può contenere oggetti di sottoclassi. così il polimorfismo è lì. puoi dire Triangle t = new Triangle(); e Cerchio c = nuovo Cerchio();

Ma qui hai una super classe che tiene l'oggetto sottocategoria Shape s = new Circle(); polimorfismo - con molte forme,

0

Il polimorfismo indica che un oggetto può assumere diverse forme. Puoi dire Shape a = new Triangle() perché una forma Triangolo IS-A (Triangle extends Shape). Puoi anche dire Shape a = new Circle() perché una forma Circle IS-A (Circle extends Shape). Nella prima riga del tuo esempio, la JVM chiamerà il metodo draw() dalla classe Triangle. Nella seconda riga, chiamerà il metodo draw() definito nella classe Circle, per tutto il tempo usando un riferimento Shape!

abstract class Shape { 
    public abstract void draw(); 
} 

class Triangle extends Shape { 

    @Override 
    public void draw() { 
     System.out.println("Triangle"); 
    } 
} 

class Circle extends Shape { 

    @Override 
    public void draw() { 
     System.out.println("Circle draw"); 
    } 
} 
0

Non andare troppo tecnico all'inizio, cerca di capire dal significato. Il significato del polimorfismo in OOP è la capacità dell'oggetto di comportarsi diversamente.ora lascia pensare a come metodo di sovraccaricare rappresentare il polimorfismo

overloading dei metodi è polimorfismo

Nel metodo OOP rappresenta un comportamento, utilizzando il metodo di tecnica sovraccarico in Java è possibile creare un metodo , che ha lo stesso nome ma parametro diverso lista, ora cominciamo a pensare .. stesso nome significa -> stesso comportamento ma sappiamo anche se il nome è simile comportamento non è esattamente lo stesso .. in parole semplici polimorfo

esempio: hai mangiato metodo in classe umana ora crei un altro metodo di mangiare diverso elenco dei parametri, in base al metodo che chiamate cambiamenti di comportamento previsti.

metodo principale è polimorfismo

allora come metodo principale è il polimorfismo? cerchiamo di capirlo. nel metodo di sovrascrittura, sovrascrivi un metodo definito nella super classe.

es: umano ha un metodo di mangiare e ora si crea una classe sovrumana, che è una sottoclasse di umano e quindi sovrascrivere il mangiare metodo di

così sappiamo che sovrumana è anche avere capacità di mangiare, ma in modo diverso, ma non come il sovraccarico ora qui abbiamo un problema di dimostrare il polimorfismo. Perché, se crei un'istanza di umano, esiste un metodo, quindi non esiste un comportamento polimorfico. come se si crea un'istanza di SuperHuman, allora c'è un metodo e un comportamento atteso, quindi non c'è polimorfismo. quindi questo è il modo in cui dimostriamo

Human a = new Human(); 
a.eat(); 
Human b = new SuperHuman(); 
b.eat(); 

non possiamo semplicemente dire che il metodo fa che in uscita, cercando in solo la parte sinistra perché entrambi "a" e "b" sono di tipo umano in modo compilatore non può essere certi quale sarà l'output di a.eat() e b.eat() fino a quando il codice non verrà effettivamente eseguito, quindi è polimorfico.