# 2 Fragen allgemeine fragen zu final und interface



## Shoo (1. Aug 2006)

Kann das final Attribut vom Complier im Allgemeinen zur Verbesserung des JVM-Codes genutzt werden ? Ja/Nein - mit Begründung

Wenn ich eine Java-Interface erstelle, wo ist dort der unterschied zur abstrakten Klasse ? Ich kann es doch auch als abstrakte Klasse deklarieren, wo ist da der Vorteil/Nachteil für mich als Programmierer, oder ist dies extrem Falläbhängig ?


----------



## AlArenal (1. Aug 2006)

Ist die Forumsuche schon wieder kaputt?

Es vergehen doch kaum mal zwei Tage, ohne dass einer das Fass von neuem öffnet...


----------



## Shoo (1. Aug 2006)

löl ... bin nicht so oft in diesem forum, sry und nach was genau sollte ich denn mal suchen? wenn ich "final" oder "interface" eingeben bekomme ich 10000 ergebnisse. Da ist es doch schneller kurz zu posten. Und bevor du so schlaue comments abgibt poste doch einfach den link zu einer solchen diskussion die mir weiterhilft ...


----------



## Mario_H (1. Aug 2006)

Du kannst mehrere Interfaces in der selben Klasse nutzen, erweitern kannst du nur eine Klasse.


----------



## AlArenal (1. Aug 2006)

Hab ich "Suchmaschine" auf der Stirn stehen? 

Hier ist ein Link: http://www.java-forum.org/de/viewtopic.php?t=8116


----------



## Shoo (1. Aug 2006)

AlArenal hat gesagt.:
			
		

> Hab ich "Suchmaschine" auf der Stirn stehen?
> 
> Hier ist ein Link: http://www.java-forum.org/de/viewtopic.php?t=8116



Das hab ich ja nicht gesagt, ich meinte bloß die zeit die du damit zugebracht hast mich zu belehren hättest entweder dir gleich sparen können oder mir mit einem konstruktiven beitrag zB in form eines links helfen können, satt hier rumzuspammen...


danke mario


----------



## AlArenal (1. Aug 2006)

Such mal hier nach "interface abstrakte klasse" und o-Wunder, o-Staunen.... 



			
				Shoo hat gesagt.:
			
		

> Das hab ich ja nicht gesagt, ich meinte bloß die zeit die du damit zugebracht hast mich zu belehren hättest entweder dir gleich sparen können oder mir mit einem konstruktiven beitrag zB in form eines links helfen können, satt hier rumzuspammen...



Ebensogut hättest du besser suchen können, denn das hätte nur deine Zeit gekostet und nicht noch die der anderern User.


----------



## Gast (1. Aug 2006)

Hi,
irgendwie interessant das Leute, die eigentlich besseres tun könnten dann den Thread lesen und sogar antworten.
Was die Forensuche angeht, so tipp ich einfach mal, dass ein Großteil der 10.000 Einträge einen Verweis auf die Forensuche beinhalten wird.

An sich finde ich wurde aber vom Threadsteller auch nicht all zu freundlich gefragt 


			
				Shoo hat gesagt.:
			
		

> Kann das final Attribut vom Complier im Allgemeinen zur Verbesserung des JVM-Codes genutzt werden ? Ja/Nein - mit Begründung


Ich meine etwas Freundlichkeit und jmd. (der sonst keine Zeit hat) nimmt sich sicherlich mal deinem Problem an (nebst der Suche bei java.sun.com, in diesem und jedem anderen Forum, einem Javabuch und google).

Das du ein Interface als abstrakte Klasse definieren kannst ist toll, versuch es mal umgekehrt. Wenn du das hinbekommen hast (insbesondere was Variablen in Interfaces angeht), versuchst du einfach mal zwei Abstrakte Klassen als Vorfahren einer Neuen zu nehmen. Gibt dann recht wenig Möglichkeiten:
1. Du liest mal nach was hinter den beiden Dingen steht
2. Du freundest dich mit so etwas wie C++ an


----------



## byte (1. Aug 2006)

Shoo hat gesagt.:
			
		

> Kann das final Attribut vom Complier im Allgemeinen zur Verbesserung des JVM-Codes genutzt werden ? Ja/Nein - mit Begründung



Früher ja, heute nein. In früheren Java Versionen konnte man durch das Setzen einer Methode auf final die VM dazu bewegen, alle Aufrufe der Methode zu _Inline_ Aufrufen zu machen. Die VM hat also einfach den Code der Methode an die Stelle kopiert, wo der Methodenaufruf eigentlich stattfindet. Damit kann man den Overhead, der durch den Aufruf einer Methode entsteht, umgehen. Ist die Methode jedoch ziemlich lang, dann gewinnt man dadurch nix. Dann ist der Gewinn an Performance gegenüber der Laufzeit der Methode verschwindend gering.

Heute sollte man sowas nicht mehr machen. Die VM kümmert sich ums Inlining automatisch. Man sollte final nur noch dann benutzen bei Methoden, wenn man wirklich nur verhindern will, dass diese Methoden überschrieben werden.


----------



## André Uhres (1. Aug 2006)

@byto: Hallo, hatte noch gar nicht mitgekriegt, daß du wieder da bist, war's schön im Urlaub?


----------



## AlArenal (1. Aug 2006)

So lange mans nicht nötiug hat, sollte man sich um Optimierungen auf diesem Niveau nicht weiter kümmern. Die JVM optimiert den Bytecode durch Analyse zur Laufzeit, da hat man eh einen Einfluss drauf (was auch gut so ist).

Lediglich so ein paar grundsätzliche Sachen zu Threads, Strings, etc. sollte man schon wissen und beherzigen... und natürlich immer schicke Algos und Strukturen ausdenken.


----------



## byte (1. Aug 2006)

_Offtopic:_



			
				André Uhres hat gesagt.:
			
		

> @byto: Hallo, hatte noch gar nicht mitgekriegt, daß du wieder da bist, war's schön im Urlaub?



Hallöchen, bin seit Sonntag Abend wieder zu Hause. Kroatien war superschön, aber leider ist eine Woche viel zu kurz.  Also ich kann die Adriaküste nur empfehlen. Gibt zwar keine Sandstrände (überall steinig), aber dafür kann man super schnorcheln, das Wetter ist super (tagsüber Sonne pur, abends angenehm) und die Preise sind niedrig.


----------



## moormaster (1. Aug 2006)

Habt ihr keinen PM Knopf für sowas? Oder wenigstens ->Plauderecke? 

_edit: volles Zitat entfernt _


----------



## André Uhres (1. Aug 2006)

@moormaster: also PM wär schlecht, denn das interessiert doch jeden wie es den andern geht, und extra Plauderecke für ne kurze Begrüssung ist wohl übertrieben. Ja wenn du nicht gepostet hättest (und das auch noch mit vollem Zitat), dann hätten wir zwei OT's gespart.


----------

