Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Chiarimenti per un programmatore alle prime armi
Forum - Java - Chiarimenti per un programmatore alle prime armi

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Ciao A tutti
vi allego il seguente codice attraverso il quale viene creato un Frame contenente TextArea
Volevo capire meglio la prima riga del "main":

"JFrame f = new NoLayoutExample("Null Example");"

Mi sembra di capire che viene creato un riferimento poliformico "f" alla classe "NoLayoutExample" che a sua volta estende JFrame.
In genere però, se ho ben capito, il polimorfismo si usa quando si vuole usare per esempio un metodo di una sottoclasse che riscrive un metodo della superclasse ereditata.
Se è cosi quale metodo della classe Jframe viene riscritto nella classe "NoLayoutExample"???
interpreto forse male???
mi dareste voi per favore un chiarimento sulla stringa in questione?
Grazieeee

--------------------------------------------------------------------------------
Codice sorgente - presumibilmente Java

  1. import java.awt.event.*;
  2. import javax.swing.*;
  3.  
  4. public class NoLayoutExample extends JFrame {
  5.  
  6.         public NoLayoutExample(String name) {
  7.                 super(name);
  8.                 JTextField t;
  9.                 getContentPane().setLayout(null);
  10.                 t = new JTextField();
  11.                 t.setLocation(12, 12);
  12.                 t.setSize(150, 30);
  13.                 getContentPane().add(t);
  14.  
  15.         }
  16.  
  17.         public static void main(String[] args) {
  18.                 JFrame f = new NoLayoutExample("Null Example");
  19.                 f.setDefaultCloseOperation(EXIT_ON_CLOSE);
  20.                 f.setSize(250, 250);
  21.                 f.setVisible(true);
  22.  
  23.         }
  24. }


-----------------------------------------------------------------------------


Ultima modifica effettuata da il 09/10/2009 alle 17:07
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 17:07
Venerdì, 09/10/2009
nel tuo codice non sovrascrivi nessun metodo, crei una classe che nel suo costruttore descrive una versione più concreta di un JFrame.

per la questione del polimorfismo la questione è più articolata, il polimorfismo permette a un metodo che accetta la classe A di poter lavorare con tutte le classi che ereditano da A.

Per intenderci se hai un metodo che lavora con la classe Persona, tu gli puoi dare un pasto una classe Dipendente, Dirigente, Avvocato ecc... che automaticamente verrà riconosciuto come persona in quando l'eredità crea la relazione "is a" cioè "è un".

ah e dimenticavo, in caso di metodi con lo stesso nome viene richiamato quello corretto.

Ultima modifica effettuata da netarrow il 09/10/2009 alle 17:09
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:22
Venerdì, 09/10/2009
Ciao netarrow
grazie mille x la risposta.
Continuo però a non capire una cosa:
in qs stringa:"JFrame f = new NoLayoutExample("Null Example");"
"f" è o no un riferimento poliformico??

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 17:31
Venerdì, 09/10/2009
salvo rare eccezioni[1] tutti i riferimenti sono polimorfici.
infatti se tu hai una situazione come

A = new A()

e poi crei una classe B che estende A puoi fare

A = new B()

e così via.

in questo modo crei una classe generica che può istanziare partendo da diverse sue sotto classi, però poi l'oggetto che uso è ufficialmente del tipo base e quindi perdi le ultime ridefinizioni.

Sarebbe più giusto che tu faccia:

NoLayoutExample  f = new NoLayoutExample("Null Example");"

[1]
Un esempio di eccezione può essere:
String s = new String();
in quento caso si usa una classe come la String che è specificata come final e quindi non può essere estesa e non puoi usare altri tipi per inizializzare direttamente istanze String

PM Quote