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

    Classi con metodi static e main?

    Salve, è molto che seguo il sito e il forum ma è la prima volta che scrivo e vorrei chiedervi una mano per un piccolo problema:

    Allora, ho creato un programma in Java con questo stile:
    codice:
    Class Esercizio1
      Class C1
      { public Meth1()
         public Meth2()
         ...
       }
      Class C2 extends C1
      {
        public Meth3()
        public Meth4()
       }
     
       public static void main(Strings[] args)
      {
       "Creazione istanze"
        Utilizzo Metodi 
        }
    END
    Premetto che la sintassi è corretta nel programma reale inteso come creazione chiamate ecc...

    L'errore è "non static method cannot be referenced from a static context"

    Ho provato con una sola classe e sono riuscito a risolvere inserendo nel main

    codice:
    Esercizio1 e = new Esercizio1();
    Ma con 2 classi non riesco, forse devo importarle dall'esterno, non saprei, gradita la conoscenza di voi esperti... Attendo illuminazioni!

  2. #2
    Forse è meglio che posti il codice reale perchè non capisco cosa intendi.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Appena possibile copierò il codice comunque in poche parole nello stesso file "Esercizio1" ho creato una classe "C1" e una ad essa estesa "C2" ma poi quando richiamo i metodi delle classi dal main mi dice "non static method cannot be referenced from a static context" ovvero che non posso perché essendo il main di tipo statico non posso da esso richiamare i metodi non dichiarati static delle classi sopra elencate.

    Se metto static a ogni metodo naturalmente funziona ma con static il programma non fa quello che voglio io...

  4. #4
    Originariamente inviato da Fiendish89
    ...
    Se metto static a ogni metodo naturalmente funziona ma con static il programma non fa quello che voglio io...
    E che problema ti da?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    purtroppo c'è poco da fare, se non posti il codice l'aiuto che ti si può dare è quasi nullo
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    codice:
    public class Esercizio1{ 	   
     public class BorsaStudio{
       private String nomebenef;
       private String ente;
       private int durata;
       private double rata;
        
       public BorsaStudio(String nomebenef, String ente, int durata, double rata){
           this.nomebenef = nomebenef;
    	   this.ente = ente;
    	   this.durata = durata;
    	   this.rata = rata;
       }
       
       public String getNomeBenef(){
           return this.nomebenef;
       }
       public String getEnte(){
           return this.ente;
       }
       public int getDurata(){
           return this.durata;
       }
       public double getRata(){
           return this.rata;
       }
       public void modRata(double r){
           this.rata=r;
       }
       public String info(){
           return this.nomebenef+ " " +this.ente+" "+this.durata+" "+this.rata;
       }
      }
     public class AssegnoRicerca extends BorsaStudio{
           private String tematica;
    	   private String dipartimento;
    	   
    	   public AssegnoRicerca(String nomebenef, String ente, int durata, double rata, String tamatica, String dipartimento){
    	   super(nomebenef, ente, durata, rata);
    	   this.tematica = tematica;
    	   this.dipartimento = dipartimento;
    	   }
    	   public String getTem(){
    	   return this.tematica;
    	   }
    	   public String getDip(){
    	   return this.dipartimento;
    	   }
    	   public String info(){
    	   return super.info() + " " + this.tematica + " " + this.dipartimento;
    	   }
    	   public boolean ConfrontoDip(AssegnoRicerca a){
    	   if(this.dipartimento.equals(a.dipartimento))
    	     return true;
    	   else 
    	     return false;
    	    
        }
    }
    	   public static void main(String[]args){
    	    Esercizio1 e = new Esercizio1();//Questa riga è solo un tentativo trovato sul web.
    	    BorsaStudio b1 = new BorsaStudio ("Leonardo", "Università dell'Aquila", 3, 150.89);
            AssegnoRicerca a1 = new AssegnoRicerca ("Armando", "Università dell'Aquila", 2, 240, "Scienze", "informatica");
    		System.out.println(b1.info());
    		System.out.println(a1.info());
    	   }
    	}
    Fatemi sapere, forse c'è qualche errorino dovuto alle molteplici prove effettuate...

    ERRATA CORRIDGE: "non static variable cannot be referenced from a static context"

  7. #7
    Ma perché hai dichiarato BorsaDiStudio e Assegno ricerca come interne a Esercizio e poi per altro le hai rese public? Non è il massimo diciamo...non ha nemmeno molto senso.
    A me il tuo codice produce il seguente errore:

    [B]No enclosing instance of type Esercizio1 is accessible. Must qualify the allocation with an enclosing instance of type Esercizio1 (e.g. x.new A() where x is an instance of Esercizio1).[(B]

    l'errore è dovuto al fatto che stai tentando di accedere ad una classe interna non statica della classe Esercizio1 da un metodo Esercizio1 che invece è statico. Hai quindi due scelte:

    1) se vuoi lasciare le due classi interne (io a questo punto le farei pure private, dichiarale anche static)
    2) esporta all'esterno di esercizio le due classi, ognuna nel proprio file , e poi le usi normalmente (anche senza necessità di dichiararle static)
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8

    Re: Classi con metodi static e main?

    Originariamente inviato da Fiendish89
    ...
    ...
    Ma con 2 classi non riesco, forse devo importarle dall'esterno, non saprei, gradita la conoscenza di voi esperti... Attendo illuminazioni!
    Mi ero già accorto che poteva essere l'errore... Quindi ti ringrazio, in poche parole devo sempre fare il main in un file e fare l'import con le classi giusto? Queste possono stare tutte accorpate in un altro file o è preferibile farne uno per classe?

    Ah il tuo errore non l'ho mai visto...

  9. #9

    Re: Re: Classi con metodi static e main?

    Originariamente inviato da Fiendish89
    Ah il tuo errore non l'ho mai visto...
    Se hai compilato il codice che hai postato qui è abbastanza strano che tu non lo abbia visto...


    Originariamente inviato da Fiendish89
    in poche parole devo sempre fare il main in un file e fare l'import con le classi giusto? Queste possono stare tutte accorpate in un altro file o è preferibile farne uno per classe?
    Non ho detto che devi SEMPRE fare così, dipende dal contesto. In generale dichiarare una classe interna ad un'altra ha senso se si vuole "nascondere" la classe all'esterno (e quindi tantovale dichiararla private).
    Inoltre , a meno che non ci sia l'esigenza sopra, è opportuno dichiarare ogni classe in un suo file con lo stesso nome e dichiararla public. Il metodo main andrebbe in una classe (generalmente con il nome del tuo programma, ma non è obbligatorio) che modella il tuo programma stesso.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.