Vererbung

Status
Nicht offen für weitere Antworten.

nihilfire

Mitglied
Hallo!
Habe die Aufgabe bekommen eine Unterklasse Schieberegister zu erstellen, welche Eigenschaften von einer Oberklasse Register erbt.
Der Konstruktor der Klasse Schieberegister bekommt ein Array mit den Registereinträgen z.B. {1,0,1,0,1,0} übergeben und soll prüfen, ob die einträge im Register "0" oder "1" sind. Wenn das der fall ist wir das Register gespeichert, wenn nicht soll ein Register derselben Länge wie das übergebene Array erzeugt und mit Nullen vorbesetzt werden. Dabei soll der Konstruktor der Oberklasse benutzt werden.

Wie kann man das realisieren?

Konstruktor der Klasse Register:
Code:
public class Register {

  private short[] feld;
  private short index;

  Register(short laenge){
    feld = new short[laenge];
    for (index = 0; index < feld.length; index++){
	feld[index] = 0;
    }
  }
}


Konstruktor der Klasse Schieberegister:
Code:
public class Schieberegister extends Register {

  private short[] speicherRegister;
  private boolean anfErr = false;


  Schieberegister(short[] speicherRegister){
	for (int i = 0; i < speicherRegister.length; i++){
		if(!(speicherRegister[i] == 0 || speicherRegister[i] == 1)){
			anfErr = true;
		}
		else{
			this.speicherRegister = speicherRegister;
		}
	}
  }
}
 

byte

Top Contributor
Den Konstruktor der Oberklasse kannst Du mit super(); aufrufen. Du musst natürlich auch die richtigen Parameter gemäß des Konstruktors übergeben. In Deinem Fall dann wohl:

Code:
super(speicherRegister.length);
 

nihilfire

Mitglied
byto hat gesagt.:
Den Konstruktor der Oberklasse kannst Du mit super(); aufrufen. Du musst natürlich auch die richtigen Parameter gemäß des Konstruktors übergeben. In Deinem Fall dann wohl:

Code:
super(speicherRegister.length);


ja, aber das soll ja nur dann aufgerufen werden, wenn ein Registereintrag nicht "0" oder "1" ist, also wenn
Code:
anfErr = true
ist und ich muss "speicherRegister.length" erst in short umwandeln also:
Code:
laenge = (short) speicherRegister.length
und dann müsste
Code:
super(laenge);
irgendwo hin da es aber nur zu beginn des Konsturktor stehen darf weiß ich nicht mehr weiter... :(

Gruß, nihilfire
 

SnooP

Top Contributor
Also schwierig... das einzige das du da machen kannst, ist erst super(laenge) zu machen und erst danach auf prüfen ob das erstelle Schieberegister überhaupt passt, wenn ja dann gut... wenn nein erstelle neues register und speichere es anstatt dem vorher gespeicherten... - ist etwas unsinnig und hier auch seltsam, dass man unbedingt auf den super-Konstruktor zugreifen soll, wenn man doch was ganz anderes machen will ;)
 

nihilfire

Mitglied
SnooP hat gesagt.:
Also schwierig... das einzige das du da machen kannst, ist erst super(laenge) zu machen und erst danach auf prüfen ob das erstelle Schieberegister überhaupt passt, wenn ja dann gut... wenn nein erstelle neues register und speichere es anstatt dem vorher gespeicherten... - ist etwas unsinnig und hier auch seltsam, dass man unbedingt auf den super-Konstruktor zugreifen soll, wenn man doch was ganz anderes machen will ;)

Aufgebenstellung:
Der Konstruktor soll ein Array mit short-Einträgen als Parameter übergeben bekommen. Er soll prüfen, ob alle diese Einträge 0 oder 1 sind und (falls das der Fall ist) sie bei der Erzeugunug der neuen Registers als Anfangswerte benutzen. Ist das nicht der Fall, so soll ein Register mit derselben Länge wie der Übergebene Array erzeugt und mit Nullen vorbesetzt werden. Dabei soll der Konstruktor der Oberklasse benutzt werden.

ohne den letzten Satz zu beachten sieht meine Lösung so aus:

Code:
Schieberegister(short[] speicherRegister){
  for (int i = 0; i < speicherRegister.length; i++){
 if(!(speicherRegister[i] == 0 || speicherRegister[i] == 1)){
   anfErr = true;
 }
 else{
   this.speicherRegister = speicherRegister;
 }
  }
  if(anfErr){
    for (int j = 0; j < speicherRegister.length; j++){
      speicherRegister[j] = 0;
    }
  }
}

Gruß, nihilfire
 

Murray

Top Contributor
Den super-Konstruktor muss man ja ohnehin aufrufen, da die Basisklasse ja keinen Default-Konstruktor hat. Vor dem Aufruf des super-Konstruktor darf man zwar nicht auf Instanzmethoden, wohl aber auf statische Methoden zugreifen.

Also z.B. so:
Code:
public class Schieberegister extends Register {

  private short[] speicherRegister;
  private boolean anfErr = false;


  Schieberegister(short[] speicherRegister){
  
	super( calcLength( speicherRegister));
	
	//-- Da feld in der Basisklasse private ist, müssen wir calcLength leider
	//-- erneut aufrufen, um zu wissen, ob das übergebene Array nur aus Nullen
	//-- und Einsen bestand
	anfErr  = calcLength( speicherRegister) < speicherRegister.length;
	
	if ( !anfErr) {
	   this.speicherRegister = speicherRegister;
	}
  }
  
  static short calcLength( short[] speicherRegister) {
  
	boolean ok = true; 
	for (int i = 0; i < speicherRegister.length; i++){
		if(!(speicherRegister[i] == 0 || speicherRegister[i] == 1)) {
			ok = false;
			break;
		}
	}
	return (short) ( ok ? 0 : speicherRegister.length); 
  }
}
 

nihilfire

Mitglied
Danke, habe noch was ergänzt/verbessert:

Code:
	if (anfErr) {
		this.speicherRegister = speicherRegister;
	}
	else{
		this.speicherRegister = super.getFeld();
	}

jetzt funktioiert es! :D

Gruß, nihilfire
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
G Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben