匿名内部类
本质上是一个没有名字的局部内部类,定义在方法中、代码块中,等。
作用:方便创建子类对象,最终目的为了简化代码编写。
特点:
1.匿名内部类是一个没有名字的内部类。
2.匿名内部类写出来就会产生一个匿名内部类的对象。
3.匿名内部类的对象类型相当于是当前new的那个的类型的子类类型。
例子:
1 public class test { 2 public static void main(String[] args) { 3 4 //匿名内部类 5 Swimming s = new Swimming() { 6 @Override 7 public void swim() { 8 System.out.println("学生开始游泳!"); 9 } 10 }; 11 go(s); 12 13 //可以把匿名内部类整体当做参数 14 go( new Swimming() { 15 @Override 16 public void swim() { 17 System.out.println("老师游泳!"); 18 } 19 }); 20 } 21 22 /** 23 * 老师、学生、运动员可以一起参加游泳比赛 24 */ 25 public static void go(Swimming s) { 26 System.out.println("开始!"); 27 s.swim(); 28 System.out.println("结束!"); 29 } 30 } 31 32 interface Swimming{ 33 void swim(); 34 }
匿名内部类可以作为方法的实际参数进行传输。
例子2:
1 public class Demo { 2 public static void main(String[] args) { 3 //1.创建窗口 4 JFrame win = new JFrame("登录界面"); 5 //桌布 6 JPanel panel = new JPanel(); 7 win.add(panel); 8 9 //2.创建一个按钮对象 10 JButton btn = new JButton("登录"); 11 12 //匿名内部类, 监听 13 btn.addActionListener(new ActionListener() { 14 @Override 15 public void actionPerformed(ActionEvent e) { 16 JOptionPane.showMessageDialog(win, "成功!"); 17 } 18 }); 19 20 //3.把按钮对象添加到桌布上展示 21 panel.add(btn); 22 23 //4.展示窗口 24 //窗口大小 25 win.setSize(300, 300); 26 //居中 27 win.setLocationRelativeTo(null); 28 win.setVisible(true); 29 } 30 }