Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
ich möchte euch drei Arten von Klassen vorstellen und wie sie eure Arbeiten erleichtern. Zu private, public etc. werde ich jedoch nichts sagen.
1. Die normale Klasse
Diese Klasse ist eine normale Klasse, wie sie jeder kennt.
Code:
import java.awt.event.*;
import java.applet.*;
public class MousePressedDemo extends Applet {
public void init(){
addMouseListener(new MyMouseAdapter(this));
}
}
class MyMouseAdapter extends MouseAdapter{
MousePressedDemo mousePressedDemo;
public MyMouseAdapter(MousePressedDemo mousePressedDemo){
this.mousePressedDemo = mousePressedDemo;
}
public void mousePressed(MouseEvent e){
mousePressedDemo.showStatus("Maustaste gedrückt");
}
}
Hier muss man eine Instanz von MousePressedDemo erstellen die über den Konstruktor übergeben wird, um dessen Methode nutzen zu können.
2. Innere Klassen
Code:
import java.awt.event.*;
import java.applet.*;
public class InnerClassDemo extends Applet {
public void init(){
addMouseListener(new MyMouseAdapter());
}
class MyMouseAdapter extends MouseAdapter{ //innere Klasse
public void mouseReleased(MouseEvent e){
showStatus("Maus gedrückt");
}
}
}
Die Klasse MyMouseAdapter wird einfach innerhalb InnerClassDemo erzeugt. Die innere Klasse erbt somit alle Variablen und Methoden und es muss keine Instanz angelegt werden.
3. Die anonyme innere Klasse
Code:
import java.awt.event.*;
import java.applet.*;
public class AnonymousInnerClassDemo extends Applet {
public void init(){
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
showStatus("Maustaste gedrückt");
}
});
}
}
Der anonymen inneren Klasse wurde wie ihr seht keinen Namen zugewiesen. Die Klasse wurde direkt in die Methode addMouseListener() implementiert. Diese Art von Klasse spart am Meisten Code.
Wer mein Beitrag noch ergänzen will, der kann das gerne tun. Wäre vielleicht nicht schlecht, wenn man es in den FAQ-Bereich verschiebt.
Die lokale Klasse wird wohl selten verwendet. Der Hauptunterschied zu der anonymen Klasse ist, dass man mehrere Instanzen von ihr (innerhalb derselben Methode) anlegen kann.
Anders als die Innere Klasse ist sie nicht in der ganzen umschliessenden Klasse sichtbar, sondern nur innerhalb einer Methode.
Code:
public class LocalClassDemo{
public void doSomething(){
class LocalClass extends JFrame {
public LocalClass( String title ) {
setTitle( title );
setBounds( 20, 20, 600, 300 );
setDefaultCloseOperation( EXIT_ON_CLOSE );
}
};
LocalClass instance = new LocalClass( "Hallo du da" );
instance.setVisible( true );
}
}
Wäre vielleicht nicht schlecht, wenn man es in den FAQ-Bereich verschiebt.
Es gibt vier verschiedene Typen von geschachtelten Klassen:
die Elementklasse - ist als ein Element einer äußeren Klasse gekapselt die lokale Klasse - ist in einem Block, z.B. einer Methode gekapselt die anonyme Klasse - ist eine lokale Klasse ohne Namen die static geschachtelte Klasse bzw. Schnittstelle - verhält sich wie Klassenmethoden bzw. Klassenvariablen
Alle Typen dieser Form von Klassen haben eine Gemeinsamkeit: sie sind innerhalb einer umschließenden Klasse definiert.