内部类(静态内部类 成员内部类 局部内部类 匿名内部类)
2014-12-09 10:19
405 查看
内部类:内部类分为四种:1、静态内部类(staticinner classes)1.1、相关使用例子:2、成员内部类(memberinner classes):2.1、相关使用例子:3、局部内部类(localinner classes):3.1、相关使用例子:4、匿名内部类(anonymousinner classes):4.1、相关使用例子:内部类:使用内部类减少了命名冲突。一个内部类可以定义在一个类中,一个方法中甚至一个表达式中。内部类分为四种:静态内部类(static inner classes)成员内部类(member inner classes)局部内部类(local inner classes)匿名内部类(anonymous inner classes)1、静态内部类(static inner classes)最简单的内部类。只能访问外部类的静态成员变量与静态方法。生成静态内部类对象的方法:
OuterClass.InnerClass inner = new OuterClass.InnerClass();1.1、相关使用例子:静态内部类:
class StaticInner{ private static int a = 1; /** * 静态内部类 * 生成的类名:StaticInner$InnerClass */ public static class InnerClass{ //静态内部类可以声明静态的成员变量,其他的内部类不可以 private static int b = 1; public void execute(){ //静态内部类只能访问静态程序 System.out.println(a + b); } } }main方法中使用:
public static void main(String[] args) { //创建静态内部类 StaticInner.InnerClass innerClass = new StaticInner.InnerClass(); innerClass.execute(); }2、成员内部类(member inner classes):成员内部类可以访问外部类的静态与非静态的方法和成员变量。生成成员内部类对象的方法:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();在局部内部类中访问外部类的成员变量的方法:
OuterClass.this.a;2.1、相关使用例子:成员内部类:
class MemberInner{ private int a = 1; public void execute(){ //在外部类中创建成员内部类 InnerClass innerClass = this.new InnerClass(); } /** * 成员内部类 */ public class InnerClass{ //内部类可以创建与外部类同名的成员变量 private int a = 2; public void execute(){ //this引用的是内部类 System.out.println(this.a); //在内部了中使用外部类的成员变量的方法 System.out.println(MemberInner.this.a); } } }在main方法中使用:
public static void main(String[] args) { //创建成员内部类 MemberInner.InnerClass innerClass = new MemberInner().new InnerClass(); innerClass.execute(); }3、局部内部类(local inner classes):类似于局部变量,不能定义为public,protected,private或者static类型。定义方法中,只能方法中声明为final类型的变量。3.1、相关使用例子:局部内部类:
class LocalInner{ public void execute(){ final int a = 1; /** * 创建局部内部类 */ class InnerClass{ public void execute(){ System.out.println("LocalInner Class"); //局部内部类只能访问final类型的变量 System.out.println(a); } } //只能在所在方法区域创建 new InnerClass().execute(); } }在main方法中使用:
public static void main(String[] args) { //外部不能直接创建局部内部类 LocalInner localInner = new LocalInner(); localInner.execute(); }4、匿名内部类(anonymous inner classes):匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。匿名内部类会隐式地继承一个父类或实现一个接口。4.1、相关使用例子:
public static void main(String[] args) { AnonymousInnerClassTest test = new AnonymousInnerClassTest(); /** * 创建匿名内部类 * 生成的类名:AnonymousInnerClassTest$1 */ test.print(new Date(){ //重写toString()方法 @Override public String toString() { return "Hello world."; } }); JButton button = new JButton(); /** * 创建匿名内部类 * 该匿名内部类实现ActionListener接口 * 生成的类名:AnonymousInnerClassTest$1 */ button.addActionListener(new ActionListener(){ //实现接口中的方法 @Override public void actionPerformed(ActionEvent e) { System.out.println("使用匿名内部类实现ActionListener接口"); } }); } public void print(Date date){ System.out.println(date); }
转载地址:http://www.itzhai.com/java-based-notebook-a-static-inner-class-within-a-class-member-within-the-class-of-local-inner-classes-anonymous-inner-classes.html
相关文章推荐
- JAVA内部类 (成员内部类、局部内部类、匿名内部类、静态内部类、内部类的继承))
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)
- 成员内部类,局部内部类,静态内部类,匿名内部类
- 六个实例教你正确使用Java内部类(成员内部类、匿名内部类、静态内部类、局部内部类)
- Java 内部类详解(成员内部类、静态内部类、局部内部类、匿名内部类)
- 牛客网Java刷题知识点之什么是内部类、为什么要使用内部类、内部类如何使用外部类的属性和方法、成员内部类、局部内部类、静态内部类、匿名内部类
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- JAVA内部类 (成员内部类、局部内部类、匿名内部类、静态内部类、内部类的继承))
- 内部类 静态内部类 成员内部类 局部内部类 匿名内部类
- Java多继承方法(名)冲突和成员内部类、局部内部类、静态内部类、匿名内部类
- 成员内部类局部内部类静态内部类匿名内部类总结
- 从字节码角度深入分析内部类(局部内部类,成员内部类,静态内部类,匿名内部类)
- Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java多继承方法(名)冲突和成员内部类、局部内部类、静态内部类、匿名内部类
- 成员内部类,静态内部类,匿名内部类,局部内部类
- Java:内部类(静态内部类、成员内部类、局部内部类、匿名内部类)