Private Class Problem

Schrubber

Bekanntes Mitglied
Hallo Ihr,

Ich sitz grad an meinen Hausaufgaben und komme nicht weiter :/


Mein bisheriges Programm:

Konto-Klasse
Java:
public class Konto {
	public int habenzins;
	public int kontonummer;
	public String kontoinhaber;
	
	public static void main(String[] args)
	{
		Sparkonto sp = new Sparkonto();
		Girokonto gk = new Girokonto();
		
		gk.setKontoinhaber = "Max Mustermann";
						
		System.out.println(gk.getKontoinhaber());
	}
	

}


Girokonto-Klasse

Java:
public class Girokonto extends Konto 
{
	public int sollzins;
	public int habenzins;
	public int kontonummer;
	private String kontoinhaber;
	public String setKontoinhaber;
	
	public String getKontoinhaber()
	{
		return kontoinhaber;
	}
	
	public String setKontoinhaber(String a)
	{
		return kontoinhaber = a;
	}

}


Mein Problem liegt daran, dass ich gerne die private Variable in dem GiroKonto verändert haben möchte. Sie muss privat sein, so ist die Aufgabenstellung. Nun hab ich dazu einmal zum Auslesen der privaten Methode die getKontoinhaber, zum schreiben die setKontoinhaber. Nur wenn ich setKontoinhaber(Max Mustermann) mache, gibt er mir den Wert "null" aus.

Weiß da derweil nicht mehr weiter :/


Wäre über jede Hilfe dankbar :)
 

eRaaaa

Top Contributor
[c]gk.setKontoinhaber = "Max Mustermann";[/c]
so ruft man keine Methoiden auf :D

-->
[c]gk.setKontoinhaber("Max Mustermann");[/c]

und beim Setter setzt man und gibt nix zurück ! (meistens jedenfalls)
Java:
    public String setKontoinhaber(String a)
    {
        return kontoinhaber = a;
    }

=>
Java:
    public void setKontoinhaber(String a)
    {
        this.kontoinhaber = a;
    }
 
Zuletzt bearbeitet:

Schrubber

Bekanntes Mitglied
Eine Frage zur Aufgabenstellung hätte ich noch:

1. Sie haben noch kein Objekt der Klasse Konto erstellt.
Ändern Sie daher die Klasse Konto so ab, dass in der main-Methode lediglich ein neues Objekt von Konto erzeugt wird. Die Erstellung der beiden Giro- und Sparkontoobjekte verschieben Sie in den neu zu erstellenden Konstruktor der Konto-Klasse.
Der einfachste Konstruktor der Klasse Willi ist public Willi() {…}



2. Bisher wird erst das Girokonto-Objekt erzeugt und danach der Kontoinhaber gesetzt. Das ist umständlich.
Programmieren Sie einen Konstruktor für die Klasse Girokonto, dem der Kontoinhaber übergeben wird. Im Konstruktor wird der übergebene Kontoinhabername in die private Variable übernommen.

Hab die Klasse Konto so abgeändert, wie Aufgabe 1 es meiner Meinung nach erfordert:

Java:
	public static void main(String[] args)
	{		
willi();
	}
	public static void willi()
	{
	Sparkonto sp = new Sparkonto();
	Girokonto gk = new Girokonto();
	gk.setkontoinhaber("Max Mustermann");
	}
	

}

Was meint mein Lehrer mit Aufgabe 2? o_O

Danke im vorraus :)
 

eRaaaa

Top Contributor
In Aufgabe 2 sollst du in der Klasse Girokonto einen Konstruktor schreiben, der einen String als Paramter erwartet.

public Girokonto(String name){
this.kontoinhaber = name;
}

EDIT: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6.5 Objekte anlegen und zerstören

Allerdings ist die Aufgabe 1 von dir falsch gelöst meiner Meinung nach (allerdings verwirrt mich irgendwie der letzte Satz..wer oder was ist Willi? :lol: (daher bin ich lieber still))

EDIT2: Hää? Irgendwie ergibt Aufgabe 1 doch gar keinen Sinn oder bin ich jetzt doof? Das endet doch in einem StackOverflowError ?!
 
Zuletzt bearbeitet:

Schrubber

Bekanntes Mitglied
Willi is bei uns immer ein Beispielsmethodenname ^^

Bei mir endet das Programm mit
java.lang.NoSuchMethodError: main
Exception in thread "main"

public void main(String[] args)
{
Girokonto gk = new Girokonto();
Sparkonto sk = new Sparkonto();

Girokonto("Test");
System.out.println(gk.getkontoinhaber());
}
public void Girokonto(String name)
{
this.kontoinhaber = name;
}

Ich komm grad gar nicht drauf klar, wie ich nun die main methode in ein static ändern kann, ohne das Girokonto auf static und somit unbrauchbar zu machen..



Edit:

Java:
public static void main(String[] args)
	{		
		Girokonto gk = new Girokonto();
		Sparkonto sk = new Sparkonto();
			
		Girokonto("Test");
		System.out.println(gk.getkontoinhaber());
	}
	public static void Girokonto(String name)
	{
		Girokonto gk = new Girokonto();
		gk.setkontoinhaber(name);
	}


Ergibt 0 Sinn -> Ausgabe "null".


Edit 3:

Sieht das schon eher aus wie die Lösung?
Java:
   public static void main(String[] args)
    {       
willi();
    }
    
    public static void willi()
    {
    Sparkonto sp = new Sparkonto();
    Girokonto gk = new Girokonto();
    gk.setkontoinhaber("Max Mustermann");
    System.out.println(gk.getkontoinhaber());
    }
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor

ja das extends habe ich gesehen, deshalb fragte ich noch einmal nach: steht das aber auch so in der Aufgabenstellung?

Denn Aufgabe 1 Zitat:
dass in der main-Methode lediglich ein neues Objekt von Konto erzeugt wird. Die Erstellung der beiden Giro- und Sparkontoobjekte verschieben Sie in den neu zu erstellenden Konstruktor der Konto-Klasse.

Wenn innerhalb des Konstruktors der Konto-Klasse, Instanzen von Girokonto erzeugt werden sollen--> ?? Endlosschleife...

oder ich bin gerade total Banane
 
Zuletzt bearbeitet:

Schrubber

Bekanntes Mitglied
Das ist die komplette Aufgabenstellung.

Übungsaufgraben Programmieren


Erstellen Sie in Eclipse die Klassen Konto mit den Attributen Habenzins, Kontonummer und Kontoinhaber, Girokonto mit der Eigenschaft Sollzins und Sparkonto. Alle Attribute sind zunächst öffentlich (public).

Erstellen Sie in der Klasse Konto die main-Methode. Darin erzeugen Sie sich je ein Objekt der Klassen Giro- und Sparkonto in den Variablen gk und sp. Nutzen Sie dafür den new-Operator:
Willi w = new Willi();

Setzen Sie den Kontoinhaber des Girokontos auf den Wert „Max Mustermann“. Nutzen Sie dafür den Punkt-Operator:
w.eigenschaft = wert;

Ändern Sie den Zugriffsspezifizierer der Eigenschaft Kontoinhaber von public auf private. Was ändert sich bei der Kompilierung des Programms und warum?

Ergänzen Sie die Klasse Girokonto um die öffentlichen Methoden getKontoinhaber und setKontoinhaber, um die private Variable Kontoinhaber von außen lesen und schreiben zu können.

Ändern Sie den Befehl aus 2) nun so ab, dass er trotz der private-Deklaration funktioniert.

Setzen Sie nun alle weiteren Attribute auf private und erstellen Sie in den Klassen die nötigen getter- und setter-Methoden. Kann Sie Eclipse dabei unterstützen?
-----------------------------------------------------------------------
Sie haben noch kein Objekt der Klasse Konto erstellt.
Ändern Sie daher die Klasse Konto so ab, dass in der main-Methode lediglich ein neues Objekt von Konto erzeugt wird. Die Erstellung der beiden Giro- und Sparkontoobjekte verschieben Sie in den neu zu erstellenden Konstruktor der Konto-Klasse.
Der einfachste Konstruktor der Klasse Willi ist public Willi() {…}

Bisher wird erst das Girokonto-Objekt erzeugt und danach der Kontoinhaber gesetzt. Das ist umständlich.
Programmieren Sie einen Konstruktor für die Klasse Girokonto, dem der Kontoinhaber übergeben wird. Im Konstruktor wird der übergebene Kontoinhabername in die private Variable übernommen.

Eine Variable kann auch als final deklariert werden. Um die Auswirkungen zu testen, fügen Sie der Variablendeklaration von Kontoinhaber das Schlüsselwort final zu. Was passiert beim Kompilieren und warum? Recherchieren Sie ggf.
Die eine private finale Zählvariable in der Klasse Willi würde so deklariert:
private final int zaehler; ein


Bin bis zu dem gestrichelten bereits fertig. (Hoffe ich zumindest :eek:)
 

Schrubber

Bekanntes Mitglied
Sind aber gerade bei dem Thema Vererbung.
Und wie sollte ich sonst das machen:

Ergänzen Sie die Klasse Girokonto um die öffentlichen Methoden getKontoinhaber und setKontoinhaber, um die private Variable Kontoinhaber von außen lesen und schreiben zu können.
 

function

Bekanntes Mitglied
ja grundsätzlich ist es logisch, da eine vererbung zu machen, nur wie eRaaa schon geschrieben hat läuft man bei einem Konstruktoraufruf einer subklasse in der mutterklasse im kreis...

du hast ja:
Java:
class Konto {
  Konto() {
    new Girokonto(); // Girokonto wird aufgeruden
  }
}

class Girokonto extends Konto {
  Girokonto() {
    super(); // Konto wird aufgerufen
  }
}
 

eRaaaa

Top Contributor
Also für mich siehts fast so aus, als wenn du die Klasse Konto nicht erweitern sollst. Schon allein weil alle Attribute private und nicht protected deklariert werden sollen, weil nichts von extends steht und wegen dem schon angesprochenem Problem!....
Aber ich finde die Aufgaben eh merkwürdig und will nun auch nichts falsches erzählen, daher klinke ich mir hier mal lieber aus (sry)
 
Zuletzt bearbeitet:

Schrubber

Bekanntes Mitglied
Soo.

Mein Lehrer sagte, dass das mit dem erweitern schon richtig sei.

Ich finde in Ihren Klassen keine Konstruktoren. Sie müssen ja nach dem Motto
public Girokonto(...parameter...)
{
}
erzeugt werden. Das hat mit "static"-Deklarationen erst einmal nichts zu tun.

Also hab ich das Ding nun so geschrieben:

Java:
    public static void main(String[] args)
    {       
Konto("Test");
    }

	public Konto(String name)
    {
    	Sparkonto sp = new Sparkonto();
        Girokonto gk = new Girokonto();
        gk.setkontoinhaber(name);
    }


Ist aber ein Error drin:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method Konto(String) is undefined for the type Konto


Ich muss aber sowas in der Art machen.
Bin über Lösungsvorschläge wiedermal erfreut :)


Schrubber
 

siriuswhite

Aktives Mitglied
Ja klar du hast ja gesagt dass der Konstruktor für Konto einen String als Parameter erwartet. Dann musst du natürlich auch einen String angeben hier also
Java:
super("Test");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
M Private Variable Java Basics - Anfänger-Themen 2
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
Z private Klassenvariablen Java Basics - Anfänger-Themen 8
S Private int in Klasse Java Basics - Anfänger-Themen 4
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
P Methoden private int[] in main Java Basics - Anfänger-Themen 16
A Klassen Werte in den private Bereich übergeben Java Basics - Anfänger-Themen 5
C Collections: private Map Java Basics - Anfänger-Themen 4
M Wie private Methoden mit Asserstions testen? Java Basics - Anfänger-Themen 3
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
W private Array Loops Java Basics - Anfänger-Themen 4
B public/private nur 1x schreiben Java Basics - Anfänger-Themen 3
H Privat ist nicht mehr private Java Basics - Anfänger-Themen 7
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
A Variablen lokale Variable als private? Java Basics - Anfänger-Themen 3
A private string array Java Basics - Anfänger-Themen 5
B auf private Variable durch eine Methode zugreifen Java Basics - Anfänger-Themen 8
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
T public-private problem Java Basics - Anfänger-Themen 5
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
K Methoden als private deklarieren? Java Basics - Anfänger-Themen 13
K Protected und Private Deklaration Java Basics - Anfänger-Themen 8
F Im Konstruktor mit Settern auf private Attribute zugreifen - oder nicht? Java Basics - Anfänger-Themen 18
B Kapselung Klasse private, Konstruktor protected Java Basics - Anfänger-Themen 10
H NEtBeans: Fehler: XXX has private access... Java Basics - Anfänger-Themen 2
K Kapselung public / private verständis problem Java Basics - Anfänger-Themen 17
E einfache Frage zu private Java Basics - Anfänger-Themen 26
W Private Methode variablen übergeben..?! WIE! Java Basics - Anfänger-Themen 30
K OOP Datenkapselung mittels private - length Attribut bei Array Java Basics - Anfänger-Themen 3
L Private Methode in Subklasse? Java Basics - Anfänger-Themen 2
K Kann man Private-Konstruktoren doch aurufen? Java Basics - Anfänger-Themen 8
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
P zugriff auf private variablen Java Basics - Anfänger-Themen 5
A Allgemeine Frage zur Sichtbarkeit "private" Java Basics - Anfänger-Themen 5
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
G field public/private wann Java Basics - Anfänger-Themen 11
Spin private Frage Java Basics - Anfänger-Themen 16
G Zugriff auf private Variablen einer inneren Klasse Java Basics - Anfänger-Themen 5
G Private Messages versenden Java Basics - Anfänger-Themen 13
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
R Private Methoden von auserhalb aufrufen Java Basics - Anfänger-Themen 2
N private variable vom typ einer klasse Java Basics - Anfänger-Themen 20
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
G GUI Controls private oder public Java Basics - Anfänger-Themen 6
G Variablen public oder private? Java Basics - Anfänger-Themen 9
P Private Klassen Java Basics - Anfänger-Themen 4
F Frage zur Vererbung und Zugriffmodifikator private Java Basics - Anfänger-Themen 3
S private public Java Basics - Anfänger-Themen 5
R private / public Frage Java Basics - Anfänger-Themen 7
S private String text; -> "Illegal start of expression Java Basics - Anfänger-Themen 7
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
G Public ,private,protected Java Basics - Anfänger-Themen 1
R Private Klasse in Applet nutzen? Java Basics - Anfänger-Themen 9
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
M Sichtbarkeit von private Java Basics - Anfänger-Themen 2
A public/private/etc. Zusatz weglassen Java Basics - Anfänger-Themen 2
M OOP frage, private variablen default-wert zuweisen sinnvoll? Java Basics - Anfänger-Themen 5
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
H Vererbung:private Java Basics - Anfänger-Themen 7
U public, private, protected und "default access" - Java Basics - Anfänger-Themen 14
T private final String oder final String? Was ist richtig? Java Basics - Anfänger-Themen 4
M Jede Variable als private, protected etc. deklarieren? Java Basics - Anfänger-Themen 7
U was macht "private" ? :) Java Basics - Anfänger-Themen 7
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
megachucky wie bekomm ich ein private attribut aus einer andren klasse? Java Basics - Anfänger-Themen 18
H private anstatt public Java Basics - Anfänger-Themen 2
H public und private Java Basics - Anfänger-Themen 5
A Public/Private und wie importieren? Java Basics - Anfänger-Themen 13
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
123456789sssssaaaa Java Wrapper Class Java Basics - Anfänger-Themen 13
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
G Could not initialize class “NoClassDefFoundError" Java Basics - Anfänger-Themen 2
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
J class version 52 und 56 Java Basics - Anfänger-Themen 6
L Fehler bei der AUsführung der .class Datei Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben