inner class

Status
Nicht offen für weitere Antworten.

rbest

Mitglied
hi. ich wieder. hab diesmal eine frage zu inneren klassen. :D
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!
 

The_S

Top Contributor
Das von deiner Schule ist eine wirkliche "innere Klasse". Das andere sind einfach zwei Klassen in einer Datei (kein schöner Stil).
 

Landei

Top Contributor
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.
 

FArt

Top Contributor
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?
 

Landei

Top Contributor
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();
  } 
}
 

rbest

Mitglied
@FArt
hast du in meinem beitrag sonstwo einen GROSSBUCHSTABEN entdeckt? :cool:
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:
 

Oli

Top Contributor
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?
 

tfa

Top Contributor
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.
 
G

Guest

Gast
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.
 

Oli

Top Contributor
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.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Phil42 "Local variable i is accessed from within inner class" Java Basics - Anfänger-Themen 3
C Klassen Minesweeper Problem. int needs to be final (inner class problem) Java Basics - Anfänger-Themen 3
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
N local variable model is accessed from within inner class; needs to be declared final Java Basics - Anfänger-Themen 4
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
K Eventlistener und inner class Variablen Java Basics - Anfänger-Themen 5
H local variable . is accessed from within inner class Java Basics - Anfänger-Themen 10
G Inner class Java Basics - Anfänger-Themen 4
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
A Labels Inner JButton Event Erstellbar? Java Basics - Anfänger-Themen 3
T Jar: Zugriff auf Dateien inner- unter außerhalb d. jar-Files Java Basics - Anfänger-Themen 3
T IntelliJ / SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". Java Basics - Anfänger-Themen 4
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
123456789sssssaaaa Java Wrapper Class Java Basics - Anfänger-Themen 13
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
G Could not initialize class “NoClassDefFoundError" Java Basics - Anfänger-Themen 2
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
J class version 52 und 56 Java Basics - Anfänger-Themen 6
L Fehler bei der AUsführung der .class Datei Java Basics - Anfänger-Themen 23
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
R HTTP-Links in Java Class finden Java Basics - Anfänger-Themen 3
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
N Fehlende .class Datei Java Basics - Anfänger-Themen 4
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
wilmaed protected class Java Basics - Anfänger-Themen 0
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
N class in class Java Basics - Anfänger-Themen 13
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
D Compiler-Fehler error: .class expected Java Basics - Anfänger-Themen 2
S Dataflow von Start bis die SystemProperties class Java Basics - Anfänger-Themen 1
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
M Scanner class Java Basics - Anfänger-Themen 6
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
J Gestaltung der GUI.class Java Basics - Anfänger-Themen 1
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5
Z Gleiches Verzeichnis für class und java unter Windows Muss? Java Basics - Anfänger-Themen 11
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
J Erste Schritte .class datei in meine form inkludieren Java Basics - Anfänger-Themen 3
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
M Class Datein aus einen Unterordner verwenden Java Basics - Anfänger-Themen 2
B .class-File mit Reflection auslesen Java Basics - Anfänger-Themen 8
C class in main aufrufen (SWT Oberfläche) Java Basics - Anfänger-Themen 5
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
M Class nach Namensänderung nicht mehr vorhanden Java Basics - Anfänger-Themen 6
P .class 2 .exe ? Java Basics - Anfänger-Themen 5
N Compiler-Fehler HundTestlauf class Fehler Java Basics - Anfänger-Themen 4
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
H Umgebungsvariable In DOS-Box läuft die fehlerfreie Class-Datei nicht. Java Basics - Anfänger-Themen 5
J Compiler-Fehler bootstrap class path not set in conjunction with -source 1.6 Java Basics - Anfänger-Themen 2
J Interface compatible to a class Java Basics - Anfänger-Themen 7
F .class expected Java Basics - Anfänger-Themen 3
S Erste Schritte Ausführen einer Class Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben