Precedente :: Successivo |
Autore |
Messaggio |
Mau Utente maturo

Registrato: 13/01/05 14:07 Messaggi: 933
|
Inviato: Mar Lug 04, 2006 10:36 am Oggetto: Domandina per gli esperti di java |
|
|
Se vi chiedessi:
"che differenza c'è tra ereditarietà e sottotipazione in Java"?
Voi cosa rispondereste?
Ho cercato sul web e ho trovato risposte moolto differenti.. |
|
Top |
|
 |
maurizio Utente maturo


Registrato: 07/01/05 12:26 Messaggi: 1523 Residenza: Vidalengo
|
Inviato: Mar Lug 04, 2006 10:51 am Oggetto: Re: Domandina per gli esperti di java |
|
|
Mau ha scritto: | Se vi chiedessi:
"che differenza c'è tra ereditarietà e sottotipazione in Java"?
Voi cosa rispondereste?
Ho cercato sul web e ho trovato risposte moolto differenti.. |
L'ereditarietà riguarda l'implementazione, la sottotipazione invece le interfacce!
Questo è quello che gli ho risposto io alla domanda che ci ha messo nel primo compitino e mi ha dato il massimo dei punti!
Poi magari te aggiungigli un esempietto  |
|
Top |
|
 |
Tomaux Utente adulto


Registrato: 12/08/04 17:56 Messaggi: 2494 Residenza: bergamo
|
Inviato: Mar Lug 04, 2006 10:55 am Oggetto: |
|
|
Se B è un sottotipo di A, allora dove c'è un termine di tipo A posso mettere un oggetto di tipo B. In ereditarietà, invece, i nuovi oggetti possono essere definiti riusando (anche parzialmente) implementazioni d’altri oggetti. Il codice della superclasse in questo caso viene riusato, ma può essere riusato solo il codice marcato public.
In generale, sottotipazione è riferito alle interfacce, mentre l'ereditarietà si riferisce alle implementazioni. _________________ A volte mi fermo e penso:
"THE EARTHQUAKE!!! OH MY FUCKING GOD, THE EARTHQUAKE!!!"
|
|
Top |
|
 |
Mau Utente maturo

Registrato: 13/01/05 14:07 Messaggi: 933
|
Inviato: Mar Lug 04, 2006 11:39 am Oggetto: |
|
|
Site stati chiarissimi! Grazie 1000
In pratica, nel progetto di info 3, dove ho definito classi che ereditano da altre classi (anche astratte) parlerò di ereditarietà.
Dove invece ho defininito delle interfacce e ho creato delle classi che ne implementano i metodi, parlerò di sottotipazione, giusto? |
|
Top |
|
 |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Mar Lug 04, 2006 11:43 am Oggetto: |
|
|
Mau ha scritto: | Site stati chiarissimi! Grazie 1000
In pratica, nel progetto di info 3, dove ho definito classi che ereditano da altre classi (anche astratte) parlerò di ereditarietà.
Dove invece ho defininito delle interfacce e ho creato delle classi che ne implementano i metodi, parlerò di sottotipazione, giusto? |
Più o meno, in java ereditarietà e sottotipazione per quanto riguarda le classi coincidono. L'unico modo di usare solo sottotipazione è l'interfaccia.
Se estendi una classe (anche abstract) hai utilizzato sia la sottotipazione sia l'ereditarietà.
Se implementi un'interfaccia hai semplicemente utilizzato la sottotipazione in quanto non c'è codice da ereditare. |
|
Top |
|
 |
Mau Utente maturo

Registrato: 13/01/05 14:07 Messaggi: 933
|
Inviato: Mar Lug 04, 2006 3:52 pm Oggetto: |
|
|
Grazie anche a te Andrea!
Ne approfitto per fare un'ultima domanda.. poi bannatemi pure se persevero !
Sort e comparable?
Ho usato qualcosa nel progetto, ma sui sort in particolare ho parecchi dubbi!
Help me pliz! |
|
Top |
|
 |
Andrea Moderatore

Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Mar Lug 04, 2006 4:44 pm Oggetto: |
|
|
Mau ha scritto: | Grazie anche a te Andrea!
Ne approfitto per fare un'ultima domanda.. poi bannatemi pure se persevero !
Sort e comparable?
Ho usato qualcosa nel progetto, ma sui sort in particolare ho parecchi dubbi!
Help me pliz! |
Poi scatta il ban
Allora Comparable<T> è un'interfaccia che definisce l'ordinamento naturale per l'oggetto: essa ha un metodo int compareTo(T o) che devi implementare per definire come avviene il confronto fra due oggetti di tipo T.
Ci sono alcune regole base per scrivere questo metodo, che sono le stesse alla base del concetto di ordinamento naturale, guarda sulla JavaDoc.
In parole povere se implementi Comparable, vuoi dire che l'oggetto può essere confrontato con altri dello stesso tipo T.
Sort(Collection<T implements Comparable<T> c) invece è un metodo statico della classe java.util.Collections (occhio alla s finale ) che permette di ordinare la collezione c.
L'ordinamento avviene per confronti successivi, quindi è necessario, come puoi vedere dalla signatura, che gli oggetti che compongono la collezione siano Comparable.
Diciamo quindi che il sort è una delle tante applicazione dell'implementazione di Comparable.
Esempio: un elenco di nomi e matricola, che deve essere ordinato.
Codice: |
public class Tessera implements Comparable<Tessera>{
private int matricola;
private String nome;
public Tessera(int m, String n){
matricola = m;
nome = n;
}
public int getMatricola{
return matricola;
}
public String getNome{
return nome;
}
@override
public int compareTo(Tessera t){
return this.getMatricola()-t.getMatricola();
}
}
|
Ho definito un confronto molto semplice ma corretto. Nel main scriverò questo
Codice: |
List anagrafica = new ArrayList<Tessera>();
anagrafica.add(new Tessera(123, "Mauro"));
anagrafica.add(new Tessera(111, "Andrea"));
java.util.Collections.sort(anagrafica)
|
|
|
Top |
|
 |
|