Klasse final dann auch automatisch die Methoden final ?
MichaelB
- java
0 Axel Richter0 MichaelB
Hallo Leute,
wenn ich eine Java-Klasse als final deklariere, sind dann die dazugehörigen Methoden auch automatisch final?
Müsste ja eigentlich so sein, weil keine weiteren Klassen abgeleitet werden können.
Es geht mir nur darum das die dynamische Methodenaufrufe die Java ja verwendet sehr viel Zeit kosten. Diese wird ja eingespart wenn klar ist, dass durch final feststeht das es nur die entsprechende Methode sein kann.
Und damit ich nicht alle Methoden in meiner Klasse explizit als final kennzeichnen will, wollte ich mal wissen ob dem Compiler das reicht.
Gruss
MichaelB
Hallo Leute,
wenn ich eine Java-Klasse als final deklariere, sind dann die dazugehörigen Methoden auch automatisch final?
Müsste ja eigentlich so sein, weil keine weiteren Klassen abgeleitet werden können.
Es geht mir nur darum das die dynamische Methodenaufrufe die Java ja verwendet sehr viel Zeit kosten. Diese wird ja eingespart wenn klar ist, dass durch final feststeht das es nur die entsprechende Methode sein kann.
Und damit ich nicht alle Methoden in meiner Klasse explizit als final kennzeichnen will, wollte ich mal wissen ob dem Compiler das reicht.
Gruss
MichaelB
Hallo,
also ich bin kein Java-Programmierer, sondern mache das eher als Hobby. Aber, wie ich das verstanden habe, ist es schon so, dass eine final-class, die ja nicht weiter erweitert werden kann, auch ihre Methoden entsprechend schützt. Was Du aber willst, passiert, glaube ich, nicht.
Bsp.:
import java.awt.*;
import java.applet.*;
public final class MeinApplet extends Applet {
public MeinApplet() {
}
public void init() {
}
public void start() {
}
public void stop() {
}
public void paint(Graphics g) {
g.drawString("Hallo Java",20,20);
}
}
lässt sich nicht erweitern. Also
class Neu extends MeinApplet
geht nicht. Damit kann auch niemand die Methode MeinApplet.paint überschreiben.
Aber das Applet selbst überschreibt ja die Methode Component.paint und erbt alle anderen Methoden von Container, Component, Object. Sobald Du also mit add(Component) z. B. einen Button auf das Applet legst, hast Du wieder deine "dynamischen Methodenaufrufe". Du müsstest also eine Klasse schreiben, die alle Funktionalität in sich vereint, ohne eine andere Klasse zu beerben. Viel Vergnügen ;-)).
Gruß
Axel
Hallo,
also ich bin kein Java-Programmierer, sondern mache das eher als Hobby. Aber, wie ich das verstanden habe, ist es schon so, dass eine final-class, die ja nicht weiter erweitert werden kann, auch ihre Methoden entsprechend schützt. Was Du aber willst, passiert, glaube ich, nicht.
geht nicht. Damit kann auch niemand die Methode MeinApplet.paint überschreiben.
Aber das Applet selbst überschreibt ja die Methode Component.paint und erbt alle anderen Methoden von Container, Component, Object. Sobald Du also mit add(Component) z. B. einen Button auf das Applet legst, hast Du wieder deine "dynamischen Methodenaufrufe".
Das würde ja nicht stören weil das ja "eine Ebene tiefer" ist.
Trotzdem würde mich mal interessieren ob der Compiler das so behandelt wie ich mir das denke.
Naja ok. Die Frage ist auch recht speziell. Gebe ich zu.
Gruss
MichaelB