匿名内部类:
**格式:**new 类|抽象类名|接口名(){
重写方法;
}
Employee e = new Employee(){
public void work(){
}
}
使用实例:
public class Test {
public static void main(String[] args) {
//利用匿名内部类创建对象
Animal a = new Animal() {
@Override
public void run() {
System.out.println("tigger跑的快!");
}
};
a.run();
}
}
abstract class Animal{
public abstract void run();
}
特点总结
匿名内部类的作用?
匿名内部类的格式
Employee e = new Employee(){
@override
public void work(){
}
}
匿名内部类的特点?
ppublic class Test1 {
public static void main(String[] args) {
go(new swim() {
@Override
public void swimming() {
System.out.println("学生在欢快的自由泳!");
}
});
System.out.println("-----------------------------");
go(new swim() {
@Override
public void swimming() {
System.out.println("老师游的贼快!");
}
});
}
public static void go(swim s){
System.out.println("比赛开始!");
s.swimming();
System.out.println("比赛结束!");
};
}
interface swim{
public void swimming();
}
总结:匿名内部类可以作为方法的实际参数进行传输。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test2 {
public static void main(String[] args) {
//创建窗口对象
JFrame win = new JFrame("登录界面");
//创建桌布
JPanel panel = new JPanel();
win.add(panel);
//创建点击按钮
JButton button = new JButton("登录");
//将按钮添加到桌布上
panel.add(button);
//设置窗口大小
win.setSize(400,300);
//设置窗口位置
win.setLocationRelativeTo(null);
//展示窗口
win.setVisible(true);
//为按钮添加事件监听器
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showConfirmDialog(win,"成功点击登录!");
}
});
}
}
使用总结:
开发中不是我们主动去定义匿名内部类的,而是别人需要我们写或者我们可以写的时候才会使用。匿名内部类的代码可以实现代码进一步简化。