第一种
public class StaticInnerClassTest
{
public static void main(String[] args)
{
//声明静态内部类的方式。
StaticInnerClass.InnerClass inner = new StaticInnerClass.InnerClass();
inner.output();
}
}
class StaticInnerClass
{
private static int a = 4;
//静态内部类只能访问外部类的静态成员变量和静态方法。
public static class InnerClass
{
public void output()
{
System.out.println(a);
}
}
}
第二种
|
public class StaticInnerClassTest2 { public static void main(String[] args) { //静态内部类的静态方法,可以不用实例化静态类而直接调用。 Animal.Cat.run(); Animal.Dog.run(); } }
class Animal { static class Cat { public static void run() { System.out.println("Cat is running"); } }
static class Dog { public static void run() { System.out.println("Dod is running"); } } } |
public class MemberInnerClassTest
{
public static void main(String[] args)
{
//成员内部类的定义方式
MemberInnerClass.InnerClass inner = new MemberInnerClass().new InnerClass();
inner.output();
}
}
class MemberInnerClass
{
private int a = 4;
public class InnerClass
{
private int a = 5;
public void output()
{
//在成员内部类调用外部类的成员,必须使用下面的方式
System.out.println(MemberInnerClass.this.a);
}
}
}
第三种
public class LocalInnerClassTest
{
public static void main(String[] args)
{
LocalInnerClass local = new LocalInnerClass();
local.doSomething();
}
}
class LocalInnerClass
{
public void doSomething()
{
// 如果在外部类的方法里面定义一个变量,必须用fianl修饰,否则不能被局部内部类访问。
final int a = 8;
//在方法里声明的类就是局部内部类
class InnerClass
{
public void test()
{
System.out.println(a);
}
}
//只能在方法里实例化,并调用局部内部类的方法
new InnerClass().test();
}
}
第四种
|
public class AnonymousInnerClassTest { @SuppressWarnings("deprecation") public String getDate(Date date) { return date. }
public static void main(String[] args) { AnonymousInnerClassTest test = new AnonymousInnerClassTest();
//在这里匿名内部类会隐式地继承Date类,然后就可以重写toLocaleString方法,从面改变它的行为。 String str = test.getDate(new Date() { @Override @SuppressWarnings("deprecation") public String toLocaleString() { return this. } });
System.out.println(str); } } |
有了匿名内部类,我们在给组件注册事件时就可以用更为简单的方式
|
public class SwingTest { public static void main(String[] args) { JFrame frame = new JFrame("Anonymous InnerClass EventListener");
JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Welcome"); } });
frame.getContentPane().add(button);
frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } });
frame.setSize(200,200);
frame.setVisible(true); } } |
1万+

被折叠的 条评论
为什么被折叠?



