java匿名内部类


/**
* 匿名内部类:
* 1、匿名内部类就是内部类的简写格式
* 2、定义匿名内部类的前提:
* 内部类必须是继承一个类或是实现接口
*
*/


abstract class AbsDemo{

abstract void show();
}


class Outer{
int x = 3;

/*class Inner extends AbsDemo{
@Override
void show() {
System.out.println("inner show: "+x);
}
}*/

public void function(){
AbsDemo ad = new AbsDemo(){
void show() {
System.out.println("anonymous inner class show():"+x);
}

void abc(){
System.out.println("abc");
}
};
ad.show();
//ad.abc();调用不了,所以匿名内部类一部不新定义方法
}
}


public class AnonymousInnerClass {
public static void main(String[] args) {
new Outer().function();
}
}


/*
* 人和动物都有心脏,但它们的结构和属性可能有些不一样。这样,就可以用内部类
* 的方式实现具体的心脏的功能。

* */

//-----------------------------------------------------------------------------------------------------------------------------------小练习一枚


interface Inter{
	void method();
}


class Test{
	static class Inner implements Inter{
		public void method() {
			System.out.println("Inner class: Inter method()");
		}
		
	}
	static Inter function(){
		/**
		 * return new Inner();
		 */
		return new Inter(){
			public void method() {
				System.out.println("Anonymous class in function().method()");
			}
		};
	}
}
public class InnerClassTest {
	public static void main(String[] args) {
		Test.function().method();
		
		//匿名内部类直接作为函数参数
		show(new Inter(){
			@Override
			public void method(){
				System.out.println("Anonymous class in arguments");
			}
		});
	}
	
	public static void show(Inter in){
		in.method();
	}
}

//------------------------------------------------------------------------------------------------------------------------------------AWT中匿名内部类的应用

import java.awt.*;
import java.awt.event.*;

public class AwtDemo {
public static void main(String args[]){
Frame f = new Frame("my.awt");
f.setSize(500,400);
f.setLocation(300,200);
f.setLayout(new FlowLayout());
Button b = new Button("我是一个按钮");
f.add(b);

//内部类
class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.out.println("我关了!"+e.toString());
System.exit(0);
}
public void windowActivated(WindowEvent e){
System.out.println("我活了!");
}
public void windowOpened(WindowEvent e){
System.out.println("我打开了!");
}
}
f.addWindowListener(new MyWindowListener());

//匿名内部类
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.out.println("我关了!"+e.toString());
System.exit(0);
}
public void windowActivated(WindowEvent e){
System.out.println("我活了!");
}
public void windowOpened(WindowEvent e){
System.out.println("我打开了!");
}
});
f.setVisible(true);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值