标签:作用 基础 非静态内部类 temp 实现类 outer inter err rate
内部类有静态内部类,静态内部类,匿名内部类,局部内部类
(1)非静态内部类
直接在类的内部定义的类就是非静态内部类,如下
public class Test { public static void main(String[] args) { Outer.Inner c1=new Outer().new Inner(); c1.Print(); } } class Outer{ private int temp=10; class Inner{ private int temp=100; public void Print() { int temp=1000; System.out.println("外部类成员变量"+Outer.this.temp); System.out.println("内部类成员变量"+this.temp); System.out.println("局部变量"+temp); } } }
外部类成员变量10
内部类成员变量100
局部变量1000
我们可以看出
(2)静态内部类
带有static的内部类
public class Test { public static void main(String[] args) { Outer.Inner c1=new Outer.Inner(); c1.Print(); } } class Outer{ private int temp=10; static class Inner{ private int temp=100; public void Print() { int temp=1000; System.out.println(this.temp); System.out.println(temp); } } }
静态内部类有以下特征
3)匿名内部类
在只用一次的情况下使用匿名内部类,用完就丢弃。主要作用比如,有接口AA,现在想调用实现接口AA的方法
就必须有实现接口的实现类,比如BB,加入这个类只是用一次,我们可以使用匿名内部类来实现
public class Test { public static void T(AA a) { a.aa(); } public static void main(String[] args) { Test.T(new AA(){ @Override public void aa() { // TODO Auto-generated method stub System.out.println("匿名内部类"); } }); } } interface AA { void aa(); }
在上面的代码中,我们在方法调用时才去new一个AA的实现类
(4)局部内部类
方法内部定义的内部类,作用域仅限于方法内部
public class Test { public void show() { class Inner{ public void run() { System.out.println("局部内部类"); } } new Inner().run(); } public static void main(String[] args) { new Test().show(); } }
标签:作用 基础 非静态内部类 temp 实现类 outer inter err rate
原文地址:https://www.cnblogs.com/jchen104/p/10204408.html