Fragen zum Konstruktor

Status
Nicht offen für weitere Antworten.

kam

Mitglied
Hi Zusammen,

Bin durch mein Studium gerade erst mit dem Java Programmieren angefangen. Nun habe ich schon einige Seiten über den Kostruktor im Netz gelesen, aber so wirklich schlau bin ich daraus noch nicht geworden.

In meiner Aufgabe soll ein Array mit einem Konstruktor initialisiert werden, welches z.B. die Werte a, b, c, d, e, f zugewiesen bekommen soll.

Nun steig ich da aber noch nicht so wirklich durch. Das "this" verwirrt mich und auch wie ich mit dem Konstruktor die einzelnen Indizes des Arrays ansprechen und ihnen Werte zuweisen kann versteh ich noch nicht.


Wäre euch sehr dankbar, wenn mir das jemand verständlicher machen kann.

Vielen Dank schonmal im Vorraus

mfg kam
 
S

SlaterB

Gast
public Klassenname(String a, String b, ..) {
this.array[0] = a;
this.array[1] = b;
...
}
 

Tharsonius

Bekanntes Mitglied
this bezieht sich immer auf das aktuelle Objekt, im dem Du es benutzt.

Beispiel:

Code:
class Test
{
  String teststring;

  protected Test(String teststring)
  {
  // Dies ist der Konstruktor. Die Klasse enthält einen String namens teststring. Diesem konstruktor wird aber auch ein
  // String übergeben. Wenn Du nun teststring verwendest, dann ist das im Konstruktor immer der übergebene. Wenn
  // Du den String der Klasse ansprechen willst, dann brauchst Du this. Beispiel:
  this.teststring = teststring; // Dies weist dem Klasseninternen teststring denjenigen zu, den Du übergeben bekommen hast.
  }
}
 

kam

Mitglied
oh das ging aber schnell :)

Code:
class Test
{
 public static void main(String[] args) 
 { 
  char[] X =  new char[6];
  
  public Test(char X[])
  {
   this.X[0] = a;
   this.X[1] = b;
   this.X[2] = c;
   this.X[3] = d;
   this.X[4] = e;
   this.X[5] = f;
  }
}
}

Könnte man das dann so schreiben?
 
S

SlaterB

Gast
ne,
a ist nirgendwo definiert, b auch nicht, c auch nicht, was jetzt noch alles kommt weißt du langsam..
den im Konstruktor übergebenen Parameter char X[] benutzt du gar nicht,
 

kam

Mitglied
Ich glaub ich seh schon wo mein Fehler ist. Die Indizes sollen nicht den Wert von a bekommen, sondern den Wert "a"


Code:
class Test
{
public static void main(String[] args)
{
  char[] X =  new char[6];
 
  public Test(char X[])
  {
   this.X[0] = 'a';
   this.X[1] = 'b';
   this.X[2] = 'c';
   this.X[3] = 'd';
   this.X[4] = 'e';
   this.X[5] = 'f';
  }
}
}
 
S

SlaterB

Gast
immer noch gilt, dass du den Parameter nicht benutzt,
dann lasse ihn weg

das habe ich vielleicht auch nur falsch in die Aufgabe hineininterpretiert

public Test()
{
this.X[0] = 'a';
this.X[1] = 'b';
this.X[2] = 'c';
this.X[3] = 'd';
this.X[4] = 'e';
this.X[5] = 'f';
}
 

Leroy42

Top Contributor
Alle Vorinformationen zusammengefasst:
Code:
class Test  { 
  char[] x =  new char[6]; 

  public Test() { 
   x[0] = 'a'; 
   x[1] = 'b'; 
   x[2] = 'c'; 
   x[3] = 'd'; 
   x[4] = 'e'; 
   x[5] = 'f'; 
  } 

  public static void main(String[] args) { 
    new Test();
  }
}
 

kam

Mitglied
ok danke, ich glaub nun hab ich das soweit verstanden. Auch mein Programm läuft schonmal und die vielen Feinheiten hab ich geändert. Danke dafür.

Eine Frage habe ich da aber noch,

Kann ich meinen Konstruktor auch aus einer anderen Klasse aufrufen, wenn ich mehrere Klassen habe?
 
S

SlaterB

Gast
beides ja,
ein Konstruktor ist wie jeder andere Code und in jedem Code kannst do offensichtlich Arrays beliebiger Länge anlegen (wieso nicht?),

dass Konstruktoren von überall aufgerufen, also Objekte von überall erzeugt werden können,
ist doch eine absolute Grundlage von Objekten überhaupt

evtl. musst du deine Klasse noch 'public' machen, aber mindestens im gleichen package sollte es schon jetzt funktionieren
 

kam

Mitglied
Schönen guten Morgen,

ch hab nun nochmal n bisschen rumprobiert. Und es funktioniert so auch, allerdings hab ich das Gefühl, dass das Ganze nun nicht mehr gut und sauber programmiert ist. z.B. das extends bei der Main Klasse.
Kann ich daran noch was optimieren, oder ist das so ok wie ich das geschrieben habe.

Danke dass ihr soviel Gedult mit mir habt... :wink:

Code:
public class Main extends Konst
{

  public static void main(String[] args) { 	
    new BubbleSort(); 									
    BubbleSort.sort(x);														
  }		
}

class Konst 
{	
  static char[] x =  new char[6];
  public Konst() {
    x[0] = 'f';
    x[1] = 'b';
    x[2] = 'a';
    x[3] = 'c';
    x[4] = 'e';
    x[5] = 'd';
  }

  static void sort(char x[]){
    // ...						
  }
}
 
S

SlaterB

Gast
eine Optimierung:

public class Main
{

statt

public class Main extends Konst
{

welche Sinn sollte die Vererbung haben?
wenn du ein Konst-Objekt erstellen willst, dann tue es und erstelle kein Main-Objekt nur weil die main-Operation in der Main-Klasse ist

im Konstruktor eines Objektes eine statische Variable zu initialisieren ist generell größer Quatsch,
du verwendest z.B. in deinem Code x ohne vorher einen Konst-Konstruktor aufgerufen zu haben,
daher wird x noch leer sein (zwar ein erzeugtes 6er-Array, aber f-d sind nicht drin)

wenn Konst nur statische Informationen enthalten soll, dann brauchst du gar keinen Konstruktor,

--------
wozu eigentlich new BubbleSort(), wenn du das erzeugt Objekt gar nicht brauchst,
werden da auch statische Variablen in einem Objekt-Konstruktor angelegt?..

-----

also vewende eins von diesen beiden, aber nicht deine Auswüchse:

Code:
public class Main { 

  public static void main(String[] args) {     
    new BubbleSort();
    Konst konst = new Konst();
    BubbleSort.sort(konst.getX());                                           
  }       
} 

class Konst 
{    
  private char[] x =  new char[6]; 
  public Konst() { 
    x[0] = 'f'; 
    x[1] = 'b'; 
    x[2] = 'a'; 
    x[3] = 'c'; 
    x[4] = 'e'; 
    x[5] = 'd'; 
  } 
  
  public char[] getX() {
     return x;
  }

}

oder


Code:
public class Main 
{ 

  public static void main(String[] args) {     
    new BubbleSort();                             
    BubbleSort.sort(Konst.x);                                           
  }       
} 

class Konst 
{    
  static char[] x =  new char[6]; 
  
  static { 
    x[0] = 'f'; 
    x[1] = 'b'; 
    x[2] = 'a'; 
    x[3] = 'c'; 
    x[4] = 'e'; 
    x[5] = 'd'; 
  } 

}
 

kam

Mitglied
Oh ich seh es auch grad, da hab ich mich nur vertippt. Das BubbleSort(); gehörte da gar nicht rein.


Ja dann werde ich mich jetzt nochmal mit denen beschäftigen und meine Auswüchse mal getrost in der Ecke stehen lassen.
 

kam

Mitglied
Super, danke. Mit dem 1. Beispiel von dir geht das wunderbar.

Kannst du mir vllt noch schnell sagen wofür genau das getX() in den Zeilen 23 und 24 da ist? Ich meine was es macht kann ich mir wohl denken, aber wie genau es das macht weiss ich leider nicht.


Danke nochmal für die Bemühungen.
 
S

SlaterB

Gast
es macht 'x zurückgeben', denn x ist private und kann daher von außen nicht sonstwie erhalten werden
 
G

Guest

Gast
Ok, das mit dem Zuweisen hat gut geklappt. Das habe ich auch verstanden, aber ich hänge jetzt an der stelle wo ich mit dem Konstruktor meine Arraylänge festlegen will...
So wie ich es bis jetzt habe kann ich die Arraylänge aber nicht mit dem Konstruktor festlegen. In der Aufgabenvorgabe steht das es mit "TestKonst(int n)" gelöst werden soll. Wobei "n" die Arraylänge ist. Aber da komm ich leider nicht drauf.

Könnt ihr mir da bitte nochmal unter die Arme greifen?

Code:
public class Main {

  public static void main(String[] args) {
    TestKonst testkonst = new TestKonst();
    TestKonst.sort(testkonst.getX());                    
  }       
}

class TestKonst { 
  
  int n = 6;
  int j, i = 0;
  private char[] a = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  private char[] x =  new char[n];
  	
  public TestKonst() {
    while(i <= n-1) {
      x[i] = a[j];
      i++;
      j++;
    }	
  }

  public char[] getX() {
     return x;
  } 
}
 

tapioca

Mitglied
du übergibst der Klasse, wie einer Methode, den Parameter, in diesem Falle n.

Anonymous hat gesagt.:
Code:
public class Main {

  public static void main(String[] args) {
    TestKonst testkonst = new TestKonst(26);
    TestKonst.sort(testkonst.getX());                    
  }       
}

class TestKonst { 
  
  int j, i = 0;
  private char[] a = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  private char[] x;
  	
  public TestKonst(int n) {
    x = new char[n];
    while(i <= n-1) {
      x[i] = a[j];
      i++;
      j++;
    }	
  }

  public char[] getX() {
     return x;
  } 
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
S Erste Schritte Zwei kleine Fragen zu [], int und Konstruktor Java Basics - Anfänger-Themen 3
S 2 Einfache Fragen (Exception Breakpoint, Konstruktor) Java Basics - Anfänger-Themen 4
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben