Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich hab wieder mal eine gescheite Frage im Anfaengerforum,
und zwar wollte ich ein Programm schreiben, bei dem per Konstruktor einige Parameter gesetzt werden.
In dieselbe Klasse hab ich auch die main reingeschrieben und nun schon den ganzen Vormittag nach einer fehlenden Initalisierung gesucht - Loesung: der Konstruktor wurde gar nicht aufgerufen !?? Warum?
Warum kann man denn fuer die Klasse in der die main liegt ueberhaupt einen Konstruktor schreiben, wenn er gar nicht aufgerufen wird??? Welchen Sinn hat das? Wie macht man das als erfahrener Programmierer, sollte man die Klasse in der sich die main befindet etwa gar nicht wirklich hernehmen? Vielleicht nur zum aufrufen anderer Objekte aber ausser main gar keine weitere Funktion reinschreiben???
nur alleine eine main reicht nicht... du musst in der main schon ein Objekt der Klasse erzeugen
Code:
public class MyClass() {
private String t;
public MyClass(String tt) {
t = tt;
}
public static void main(String[] args) {
MyClass c = new MyClass("hallo");
}
}
allgemein ist immer gut bei problemen deinen code zu posten, dann können wir besser darauf antworten
OK, dann quael ich Euch mal mit meinem Quellcode...
Code:
public class Project01 {
/...
.../
private static FilePresentation presentation;
private static Vector PageIndex;
private Project01(){
System.out.println("init");
/...
.../
// jetz mit Vector ;-)
PageIndex = new Vector(); // Wird nicht ausgefuehrt !!???
/...
.../
public static void main(String[] args){
/...
.../
PageIndex.addElement("test1");
PageIndex.addElement("test2");
PageIndex.addElement("test3");
presentation = new FilePresentation(PageIndex);
/...
.../
presentation.chooseFile();
}
Also...
ich hatte nen Code der in etwa so aussah, wichtig ist eigentlich nur der Vector "PageIndex". Ich bekam Fehlermeldungen obwohl ich eigentlich dachte alles richtig konstruiert/initialisiert zu haben. Der Grund war eben das nichtausfuehren der Zeile der Instanziierung - aber warum?
PS.:
Vielleicht liegt es ja an der private Deklaration vom Konstruktor, ich dachte solange es ansonsten hinhaut, lieber mal private machen?! Wofuer kann man den denn sonst eigentlich private machen, hab mich eh gewundert, dass es ueberhaupt funktioniert.
Danke - gute Zusammenfassung !!
Ich dachte aber wenn die main Bestandteil der "definierten Klasse" ist, muesste eben ein Zugriff moeglich sein - is aber wohl ne Ausnahme wegen "dem ersten Instantiieren von Aussen" (??).
Ich dachte aber wenn die main Bestandteil der "definierten Klasse" ist, muesste eben ein Zugriff moeglich sein - is aber wohl ne Ausnahme wegen "dem ersten Instantiieren von Aussen" (??).
nein sie muss nicht instantiiert werden. keine klasse muss instantiiert werden. aber deine variable ist null und wenn sie null ist kansnt du nicht drauf zugreifen. und sie wird nur initialisiert wenn deine klasse instantiiert wird. au0erdem is das n bissl sinnlos einen statiscje variable in einem konstruktor zu inintiaisieren :-/
v.a. kann es passieren, dass du die statische variable änderst. wenn du danach ein neues objekt erzeugst verändert sich die statische variable ungewollt auf den initialwert