inner class

Status
Nicht offen für weitere Antworten.

rbest

Mitglied
hi. ich wieder. hab diesmal eine frage zu inneren klassen. 😀
das ist die version unserer schule:
Code:
public class outerclass
{
   class innerclass
   { }
}
im internet hab ich folgende version gefunden:
Code:
public class outerclass
{ ... }

class innerclass   // in derselben datei
{ ... }
kann mir bitte jemand 2 sätze dazu sagen? was ist der unterschied, besser, schlechter, ...? danke schon mal!
 
Das von deiner Schule ist eine wirkliche "innere Klasse". Das andere sind einfach zwei Klassen in einer Datei (kein schöner Stil).
 
War ja nur Spaß, und ist in dem Mini-Beispiel auch egal.

Aber generell begegnet mir hier im Forum viel zuviel Code mit falscher Groß/Kleinschreibung. Es gibt gute Gründe für die diesbezüglichen Konventionen, und wenn ich Prof wäre, gäbe es für falsche Groß/Kleinschreibung Punktabzug.
 
rbest hat gesagt.:
Landei hat gesagt.:
KLASSENNAMEN SCHREIBT MAN GROSS!!!1!!1! ;-)

wer lesen kann, ist meistens im vorteil. meine frage geht hier nicht um das aussehen von codetext. :noe:

LOL... erklär doch bitte dem Fahrprüfer, dass er nur bewerten soll ob du Auto fahren kannst und die Verkehrsregeln kennst, nicht aber deinen Fahrstil.

Wenn du es in einem kleinen Beispiel nicht richtig machen kannst, wie dann in der freien Wildbahn?
 
Aber um noch was zum Thema beizutragen: Es gibt insgesamt 4 (in Worten VIER) verschiedene Arten von "eingebetteten" Klassen (manche Leute nennen alle Arten "innere" Klassen, was aber verwirrend ist). Man sollte auf jeden Fall den Unterschied zwischen Inneren und Statischen (oder "Statischen Inneren") Klassen kennen (und immere letztere verwenden, wenn möglich).

Code:
class OuterClass {

  Object anonymousInnerClass = new Object(){
     {System.out.println("Ich will anonym bleiben");}
  };

  class InnerClass {}

  static class StaticInnerClass {}

  void f() {
    class LocalInnerClass(){}
    LocalInnerClass localInnerClass = new LocalInnerClass();
  } 
}
 
@FArt
hast du in meinem beitrag sonstwo einen GROSSBUCHSTABEN entdeckt? 😎
nur zum verständnis. ich habe als "organisations-programmierer" seit 1988 viele jahre c, vfp und delphi programmiert und mich oft über miserablen programmierstil von schulabgängern gewundert. in der schule wurden aufgrund meiner erfahrung erstmals namenskonventionen und richtlinien eingeführt. was ich jetzt in der weiterbildung als regel oder richtlinie in java erkenne, setze ich natürlich um. vor allem, wenn ich etwas an andere weiter gebe, aber nicht unbedingt, wenn ich frage. :wink:

@landei
siehste, genau das ist das, was ich brauche. super!


@tfa
das alles wurde uns als "lokale klassen" angeboten: verschachtelte klassen, innere klasse, inner class und nested class.
:wink:
 
Landei hat gesagt.:
Aber um noch was zum Thema beizutragen: Es gibt insgesamt 4 (in Worten VIER) verschiedene Arten von "eingebetteten" Klassen (manche Leute nennen alle Arten "innere" Klassen, was aber verwirrend ist). Man sollte auf jeden Fall den Unterschied zwischen Inneren und Statischen (oder "Statischen Inneren") Klassen kennen (und immere letztere verwenden, wenn möglich).

Super Erklärung, aber warum sollte man immer wenn möglich static inner classes verwenden?
 
Oli hat gesagt.:
Super Erklärung, aber warum sollte man immer wenn möglich static inner classes verwenden?
Das ist besser für die Kapselung und auch die Performance. Wenn das Objekt der eingebetteten Klasse keinen Zugriff auf das umschließende benötigt, sollte man auch keinen bereitstellen. In inner Classes wird immer eine this$0 Variable mitgeschleppt, die auf das äußere Objekt verweist.
 
rbest, wenn die Meister sagen, dass die Klassennamen mit großen Buchstaben anfangen sollen, dann musst du sagen "Aha, wieder was neues gelernt. Vielen Dank!" und nicht labern und komische Argumente finden. Es mag ja sein, dass dein Code trotzdem funktioniert. Aber Klassennamen entsprechen auch Datentypen in Java und die beginnen mit GROßEN Buchstaben! So kannst du unterscheiden, ob "blabla" ein Klassenname oder ein Variablenname ist (Blabla --> Klasse; blabla --> Variable) und wenn du 20000 Zeilen Quellcode hast, musst du nicht nach Deklaration dieses Ausdrucks suchen, ob es eine Klasse oder eine billige member Varible ist.
 
rbest hat gesagt.:
@FArt
in der schule wurden aufgrund meiner erfahrung erstmals namenskonventionen und richtlinien eingeführt. was ich jetzt in der weiterbildung als regel oder richtlinie in java erkenne, setze ich natürlich um. vor allem, wenn ich etwas an andere weiter gebe, aber nicht unbedingt, wenn ich frage.

Nun, vielleicht kommen ja dann Schüler mal die Idee auch dieses Forum zu besuchen und stoßen auf den Eintrag ihres Lehrers, was ja nicht schwer isr, denn auf der Verlinkten Internetseite prangt ja dein Bild...
Ich bin halt der Meinung, wenn man etwas lehrt, dann sollte man sich an das gelehrte auch halten. (Vorbildfunktion oder so ähnlich...??)

@tfa: Danke für die Antwort, die this$0 ist mir beim debuggen schon des öfteren untergekommen, jetzt weiß ich auch warum... 🙂.
Nun da hab ich mir jetzt richtig Arbeit eingeheimst, weil ich jetzt nach und nach meinen Code entsprechend anpassen werde.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben