Java内部类,定义在内部的类称为内部类。
分为:静态内部类,成员内部类,局部内部类,匿名内部类
一、静态内部类
public class StaticInnerClassTest { public static void main(String[] args) { StaticInner.Inner inner = new StaticInner.Inner(); inner.test(); } } class StaticInner{ private static int a = 4; public static class Inner { public void test(){ System.out.println(a); } } }
只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为
OuterClass.Inner inner = new OuterClass.Inner()
二、成员内部类
class MemberInner{
private int a = 4;
public class Inner2{
private int a = 5;
public void doSomething(){
System.out.println("hello world");
}
public void printA(){
//访问外部类 a = 4
System.out.println(MemberInner.this.a);
}
}
}
public class MemberInnerClassTest {
public static void main(String[] args) {
MemberInner.Inner2 inner2 = new MemberInner().new Inner2();
inner2.doSomething();
}
}
三、局部内部类
定义在方法中,只能访问方法中声明的final类型变量
class LocalInner{
public void doSomeThing() {
class Inner3{
public void test(){
System.out.println("hello world");
}
}
//方法中定义的类,在该方法中使用
new Inner3().test();
}
}
public class LocalInnerClassTest {
public static void main(String[] args) {
LocalInner inner = new LocalInner();
inner.doSomeThing();
}
}
四、匿名内部类
匿名内部类会隐试的继承一个父类或者实现一个接口
1、匿名内部类重写toLocaleString方法
public class AnnoymousInnserClassTest {
public String get(Date date){
return date.toLocaleString();
}
public static void main(String[] args) {
AnnoymousInnserClassTest test = new AnnoymousInnserClassTest();
//String str = test.get(new Date());
String str = test.get(new Date(){
public String toLocaleString() {
return "Hello world";
}
});
System.out.println(str);
}
}
打印结果:

2、使用Swing的匿名内部类

内部类Code
public class SwingTest {
public static void main(String[] args) {
JFrame frame = new JFrame("JFRame");
JButton button = new JButton("click");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("hello world");
}
});
frame.setSize(200, 200);
frame.getContentPane().add(button);
frame.setVisible(true);
}
}
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号