`
mmdev
  • 浏览: 12930906 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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);
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics