内部类的定义:
顾名思义,内部类就是在一个类的定义中包含另一个类的定义!
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); }
匿名内部类的好处就是书写更加方便