Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [java & hashtable with extends]

    Ragazzi mi date una mano a capire una cosa dalla teoria se estendo una classe dalla mia allora dovrebbe essere facile riuscire ad utilizzare i metodi da cui estendo la classe sulla mia classe istanziando un oggetto della mia classe insomma ragazzi vi posto il codice e aspetto notizie:

    import java.lang.*;
    import java.util.Enumeration.*;
    import java.util.*;
    import java.text.*;
    public class Ext extends Hashtable{
    public Ext(){
    Ext e=new Ext();
    e.put(("one", new Integer(1));
    e.put(("two",new Integer(2));
    e.put(("three",new Integer(3));
    Integer n = (Integer)numbers.get("two");
    if (n != null){
    System.out.println("two = " + n);
    }

    }
    public static void main (String[] args){
    Ext e= new Ext();
    int l=e.size();
    System.out.println("La size dell'hash e':"+l);

    }
    }
    ....Già perchè è uno sporco lavoro ma qualcuno lo deve pur fare

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Quello che dici sull'estensione delle classi è giusto, però il codice cha hai scritto contiene degli errori. A parte alcuni errori di sintassi, come qualche parentesi di troppo e un identificatore non dichiarato, c'è un errore non sintattico e non rilevabile a tempo di compilazione, ovvero l'istruzione:
    codice:
    Ext e=new Ext();
    Creando un nuovo oggetto Ext all'inerno del costruttore della classe Ext stessa dai vita ad una sequenza infinita di chiamate al costruttore di Ext, che solleva uno StackOverflowError. Il costruttore di una classe crea da sè un'istanza della classe, è proprio questo il compito del costruttore. Una versione corretta del tuo programma è la seguente:

    codice:
    import java.lang.*; 
    import java.util.Enumeration.*; 
    import java.util.*; 
    import java.text.*; 
    
    public class Ext extends Hashtable{ 
    
    	public Ext(){ 
    
    		put("one", new Integer(1)); 
    		put("two",new Integer(2)); 
    		put("three",new Integer(3)); 
    		Integer n = (Integer)get("two"); 
    		if (n != null)
    		System.out.println("two = " + n); 
    	} 
    
     
    
    	public static void main (String[] args){ 
    		Ext e= new Ext(); 
    		int l=e.size(); 
    		System.out.println("La size dell'hash e':"+l); 
    
    	} 
    }
    Ciao.

  3. #3

    re

    Guarda credo solo k nn ci siamo capito è verro quello che hai detto tu.Ma io stavo chiedendo è mai possibile che non esiste un modo per accedere ad un metodo della superclasse nella mia sottoclasse(Per esempio put nella superclasse Hashtable inserisci una coppia chiave/valore nell'hashtable).io creo la sottoclasse Ext estendendola dalla classe Hashtable e quindi vorrei fare in modo che la mia classe Ext potesse essere considerata da un futuro package e quindi da altre classi,come un hashtable e k le sue operazioni primarie potesse essere quelle di inserimento e cancellazione degli elementi contenuti dentro l'hashtable.Grazie per il chiarimento fattomi sul discorso del costruttore.
    ....Già perchè è uno sporco lavoro ma qualcuno lo deve pur fare

  4. #4

    Re: re

    Originariamente inviato da lupo987
    Ma io stavo chiedendo è mai possibile che non esiste un modo per accedere ad un metodo della superclasse nella mia sottoclasse.
    E perchè non dovrebbe essere possibile?

    Nel codice che ti ha postato anx721 viene eseguita la chiamata del metoto put, appartenente alla classe Hashtable, ma ereditato dalla tua classe Ext.

    Il metodo lo puoi utilizzare tranquillamente e, oltretutto, ti è permesso anche di sovrascriverlo.

    Originariamente inviato da lupo987
    ...e quindi vorrei fare in modo che la mia classe Ext potesse essere considerata da un futuro package...
    Sarà sufficiente che tu, all'inizio del codice che ti ha postato anx721, aggiunga questo:

    codice:
    package pacchettoMieClassi;
    E quando ne vuoi usufruire:

    codice:
    import pacchettoMieClassi.*;
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352

    Re: re

    Originariamente inviato da lupo987
    io creo la sottoclasse Ext estendendola dalla classe Hashtable e quindi vorrei fare in modo che la mia classe Ext potesse essere considerata da un futuro package e quindi da altre classi,come un hashtable e k le sue operazioni primarie potesse essere quelle di inserimento e cancellazione degli elementi contenuti dentro l'hashtable
    Estendendo Hashtable, la tua classe Ext è a tutti gli effetti una Hashtable (anche qlcosa in +) e quindi puoi usare un'istanza di Ext ovunque sia richiesta una Hashtable, e puoi invocare su di essa ogni metodo che può esere invocato su un' Hashtable. Ciao.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Re: Re: re

    Originariamente inviato da anx721
    Estendendo Hashtable, la tua classe Ext è a tutti gli effetti una Hashtable (anche qlcosa in +) e quindi puoi usare un'istanza di Ext ovunque sia richiesta una Hashtable, e puoi invocare su di essa ogni metodo che può esere invocato su un' Hashtable. Ciao.
    Questo si chiama EREDITARIETA'

    Originariamente inviato da naighes
    Il metodo lo puoi utilizzare tranquillamente e, oltretutto, ti è permesso anche di sovrascriverlo.
    E questo si chiama POLIMORFISMO


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.