Hallo zusammen,
momentan beschäftige ich mich mit dem Dekorierer. Die Idee ist mir klar, ebenso das Beispiel von http://www.java-forum.org/java-basics-anfaenger-themen/84476-frage-entwurfsmustern.html.
Dieses kommt aus einem Buch (http://www.oreilly.com/catalog/hfdesignpat/chapter/ch03.pdf), das noch ein weiteres Beispiel hat: Ein Dekorierer für InputStream. (Ab Seite 101 zu finden)
[Java]
import java.io.*;
public class LowerCaseInputStream extends FilterInputStream {
public LowerCaseInputStream(InputStream in) {
super(in);
}
public int read() throws IOException {
int c = super.read();
return (c == -1 ? c : Character.toLowerCase((char)c));
}
public int read(byte[] b, int offset, int len) throws IOException {
int ergebnis = super.read(b, offset, len);
for (int i = offset; i < offset+ergebnis; i++) {
b = (byte)Character.toLowerCase((char)b);
}
return ergebnis;
}
}
[/code]
Nun zu meiner Frage:
Der Konstruktor ruft den Konstruktor der Oberklasse auf - aber die ist doch abstrakt. Was passiert da also?
Bis bald!
momentan beschäftige ich mich mit dem Dekorierer. Die Idee ist mir klar, ebenso das Beispiel von http://www.java-forum.org/java-basics-anfaenger-themen/84476-frage-entwurfsmustern.html.
Dieses kommt aus einem Buch (http://www.oreilly.com/catalog/hfdesignpat/chapter/ch03.pdf), das noch ein weiteres Beispiel hat: Ein Dekorierer für InputStream. (Ab Seite 101 zu finden)
[Java]
import java.io.*;
public class LowerCaseInputStream extends FilterInputStream {
public LowerCaseInputStream(InputStream in) {
super(in);
}
public int read() throws IOException {
int c = super.read();
return (c == -1 ? c : Character.toLowerCase((char)c));
}
public int read(byte[] b, int offset, int len) throws IOException {
int ergebnis = super.read(b, offset, len);
for (int i = offset; i < offset+ergebnis; i++) {
b = (byte)Character.toLowerCase((char)b);
}
return ergebnis;
}
}
[/code]
Nun zu meiner Frage:
Der Konstruktor ruft den Konstruktor der Oberklasse auf - aber die ist doch abstrakt. Was passiert da also?
Bis bald!