Sichtbarkeit vom Variablen, Klassen usw.

Wolfgang1

Mitglied
Hallo,
mit Eclipse habe ich mir ein kleines Programm erstellt um mir die Sichtbarkeit von Daten vor Augen zu führen.
Java:
package start;

import pack1.pack1_start;

public class start {

   public static void main(String[] args) {
		
      pack1_start neuobjekt = new pack1_start();		// legt neues Objekt an
	
      neuobjekt.pack1_methode1();				// ruft methode auf

      neuobjekt.pack1_methode2();				// druckt Ergebnis Methode 2 aus
	
      System.out.println("Test: "+neuobjekt.var_pack1_1);	// druckt Inhalt Variable var_pack1_1 aus objekt neuobjekt aus
			
      //System.out.println("Test: "+neuobjekt.var_pack1_2);	// funktioniert nicht, da var_pack1_2 als private deklariert 
		
      System.out.println("Ende Programm");
		
   }
}
Java:
package pack1;

public class pack1_start {

   public  String var_pack1_1 = "Var-pack1";  
   private String var_pack1_2 = "Var-pack2";  

   public void pack1_methode1() {		// 1. Methode ohne Rückgabe (void ist dafür verantwortlich)	
      System.out.println("Pack1_start pack1_methode1 Methode: "+var_pack1_1);
      System.out.println(var_pack1_2);
      System.out.println("pack1_methode1-Ende");
   }

   public String pack1_methode2() {	// 2. Methode mit der Rückgabe eines Stringes		
      System.out.println("Pack1_start pack1_methode2 Methode: "+var_pack1_1);
      System.out.println(var_pack1_2);
      System.out.println("pack1_methode2-Ende");
		
      return "pack1_methode2 mit Rückgabe";
   }
}
Java:
package pack2;

public class pack2_start {

   public void pack2_methode1() {			

      System.out.println("Test in pack2: "+neuobjekt.var_pack1_1);	// Funktioniert nicht
		
      System.out.println("pack2_methode1-Ende");
   }
}
Obwohl das Objekt "neuobjekt" in der mit public Startmethode "public static void main(String[] args) {..." erstellt wurde, so ist dieses scheinbar in pack2_start nicht sichtbar. Die Zeile 7 bringt eine Fehlermeldung. Info von Eclipse "neuobjekt cannot be resolved to a variable".
In der anhängenden Datei ein screenshot von der Eclipse Oberfläche.

Hat einer eine Idee dazu?

mfg
Wolfgang
 

Anhänge

Hallo,
du hast neuobjekt innerhalb einer Methode (wenn auch einer öffentlichen, das hat damit nichts zu tun) erstellt, also nur eine lokale variable. wenn, dann müsstest du in start deklarieren:

Java:
public static pack1_start neuobjekt;

und dann in der main initialisieren

Java:
neuobjekt = new pack1_start();

dann kannst du von pack2_start aus zugreifen.

javampir
 
Java:
package start;

import pack1.pack1_start;

public class start {

   public static pack1_start neuobjekt; 		    // geändert
	
   public static void main(String[] args) {

      neuobjekt = new pack1_start();		        // geändert
      //pack1_start neuobjekt = new pack1_start();  // vor Änderung

      neuobjekt.pack1_methode1();					        // ruft methode auf

      neuobjekt.pack1_methode2();			   		        // druckt Ergebnis Methode 2 aus
	
      System.out.println("Test: "+neuobjekt.var_pack1_1);	// druckt Inhalt Variable var_pack1_1 aus objekt neuobjekt aus
			
      //System.out.println("Test: "+neuobjekt.var_pack1_2);	// funktioniert nicht, da var_pack1_2 als private deklariert 
		
      System.out.println("Ende Programm");
   }
}
Falls die Änderung so gemeint war, so hat sie nicht zum Erfolg geführt.

mfg
Wolfgang
 
Hallo,
dann fehlen meiner Meinung nach noch zwei Dinge: zum einen musst du dein package start in der Klasse pack2_start sichtbar machen (mit import package start), und beim Aufruf in pack2_start musst du dann neuobjekt mit start.neuobjekt ansprechen. So würd ichs machen (und dann auch hier ins forum kommen 😀 ).
Gruß, javampir
 

Zurück
Oben