Java内部类和匿名内部类

内部类的定义:

顾名思义,内部类就是在一个类的定义中包含另一个类的定义!

package com.pw.demo; //内部类 public class A { public int i; class B{ public int j; public void show(){ System.out.println(i+j); } } }

内部类实例化:

A a=new A(); A.B b=a.new B();

内部类的特定:

类B定义时可以访问类A中的成员属性和方法

内部类编译时产生的文件为A$B.class


匿名内部类的定义

package com.pw.demo; public class C { public C(){} public void show(showInterface inte){}; interface showInterface{ void print(); } }

匿名内嵌类的举例

public static void main(String[] args){ C c=new C(); c.show(new showInterface() { @Override public void print() { // TODO Auto-generated method stub } }); }

showInterface是一个接口,不能够实例化,而这里却使用了new showInterface(){…},这段代码块就是匿名内嵌类,他原本应该是怎么写呢?

//定义类showImpl并实现showInterface接口 class showImpl implements showInterface{ public void print() { // TODO Auto-generated method stub } } public static void main(String[] args){ C c=new C(); showImpl impl=c.new showImpl(); //因为showImpl是内部类 showInterface inte=impl; c.show(inte); }

匿名内部类的好处就是书写更加方便