`

Java中innerClass内部类

    博客分类:
  • Java
阅读更多
1. Java中innerClass内部类

用AA.BB可以生成内部类,在编译的时候用AA$BB.class来表示。
class StaticInner{
    private static int a = 4;
    public static class Inner{
        public void test(){
            System.out.println(a);
        }
    }
}
public class StaticInnerClassTest {
    public static void main(String[] args) {
        StaticInner.Inner inner = new StaticInner.Inner();
        inner.test();
    }
}
运行结果:
4

1) 静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为: 
OuterClass.InnerClass inner = new OuterClass.InnerClass();

class MemberInner{
    private int a = 4;
    public class Inner2{
        private int a = 5;
        public void doSomething(){
            System.out.println(MemberInner.this.a);
        }
    }
    public void method(){
        Inner2 inner = this.new Inner2();
    }
}
public class MemberInnerClassTest {
    public static void main(String[] args) {
        MemberInner.Inner2 inner = (new MemberInner()).new Inner2();
        inner.doSomething();
    }
}

用(new AA()).new BB()类生成内部类,访问成员变量时,用OuterClass.this.aaa访问外部类的变量。
MemberInner.Inner2 inner = (new MemberInner()).new Inner2();

2) 成员内部类(memberinnerclass):可以访问外部类的静态与非静态的方法与成员变量。生成成员内部类对象的方式为:
OuterClass.InnerClassinner = newOuterClass().newInnerClass();

class LocalInner{
    public void doSomething(){
        final int a = 4;
        class Inner3{
            public void test(){
                System.out.println(a);
            }
        }
        new Inner3().test();
    }
}
public class LocalInnerClassTest {
    public static void main(String[] args) {
        LocalInner localInner = new LocalInner();
        localInner.doSomething();
    }
}

LocalInner localInner = new LocalInner();
localInner.doSomething(); 想要访问内部类,就调用外部类的方法。

3) 局部内部类(LocalInnerClass):定义在方法当中,只能访问方法中声明的final类型的变量。

import java.util.Date;
public class AnonymousInnerClassTest {
    @SuppressWarnings("deprecation")
    public String get(Date date){
        return date.toLocaleString();
    }
    public static void main(String[] args) {
        AnonymousInnerClassTest test = new AnonymousInnerClassTest();
        // String str = test.get(new Date());
        // System.out.println(str);
        String str = test.get(new Date(){
            public String toLocalString(){
                return "hello world";
            }
        });
        System.out.println(str);
    }
}

编译时生成生成AnonymousInnerClassTest$1.class。

4) 匿名内部类(Anonymous Inner Class) :匿名内部类会隐式地继承一个父类或实现一个接口。

匿名内部类实现actionPerformed方法的监听器的监听
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SwingTest {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JFrame");
        JButton button = new JButton("click me");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("welcome");
            }
        });
        frame.setSize(200, 200);
        frame.getContentPane().add(button);
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.setVisible(true);
    }
}
分享到:
评论

相关推荐

    Java中inner_class内部类

    1. 对于成员内部类和静态嵌套类,可以通过`new OuterClass().new InnerClass()`或`OuterClass.InnerClass inner = new OuterClass().new InnerClass();`来实例化。 2. 局部内部类和匿名内部类只能在定义它们的方法...

    java-内部类(InnerClass)详解.pdf

    Java 内部类,也称为嵌套类,是Java编程语言中的一种特殊特性,它允许一个类被定义在另一个类的内部。内部类分为几种类型,包括静态成员类(Static member class)、局部内部类(Local inner class)、匿名内部类...

    java_innerclass_instance.rar_innerclass

    在“java_innerclass_instance.rar_innerclass”这个压缩包中,包含的资源可能是一个关于Java内部类实例应用的示例代码。 内部类主要有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。这里我们主要...

    Java内部类(innerclass).docx

    在Java编程中,嵌套类是一种重要的面向对象设计工具,它允许程序员在一个类的内部定义另一个类。这种特性极大地增强了Java语言的灵活性和封装能力。 #### 二、嵌套类分类 嵌套类主要分为两大类:**静态嵌套类**...

    java易混淆概念Anonymous Inner Class

    Java编程语言中存在一些易混淆的概念,今天我们将探讨 Anonymous Inner Class、final、finally、finalize 的区别,Static Nested Class 和 Inner Class 的不同,&和&&的区别,HashMap 和 Hashtable 的区别,...

    深入浅析Java中Static Class及静态内部类和非静态内部类的不同

    Java中的静态内部类(Static Class),也称为嵌套静态类,是Java语言提供的一种独特机制,它允许我们在一个外部类内部定义一个静态的类。这种类的声明前面带有`static`关键字,与普通的内部类(非静态内部类)有所...

    Java语法总结 - 内部类

    Java内部类是Java语言中的一种特殊类别,它是指定义在另外一个类内部的类。内部类可以访问外部类的所有成员变量和方法,包括私有的变量和方法。内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部...

    java内部类详解

    创建静态内部类的实例时,无需先创建外部类的实例,而是通过外部类名直接创建,如 `OuterClass.InnerClass inner = new OuterClass.InnerClass();`。 2. 成员内部类(Member Inner Class) 成员内部类不带 `static...

    第11章 内部类(Inner class).ppt

    内部类(Inner Class)是Java语言中一个独特的特性,它允许在一个类的内部定义另一个类。这种设计模式在处理特定问题时提供了更大的灵活性,比如实现事件监听器、封装复杂逻辑或者创建私有的辅助类。本章我们将深入...

    java-嵌套类(inner class)-来自oracle官网

    嵌套类主要分为两大类:静态嵌套类(Static Nested Class)和非静态嵌套类(Non-static Nested Class),后者通常被称为内部类(Inner Class)。 - **静态嵌套类**:此类嵌套类被声明为`static`,因此它们与外部类...

    java 内部类 局部内部类 匿名类 实例代码

    Java内部类是Java语言特性中一个独特而强大的部分,它允许在一个类的内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java中的...

    Class详解内部类等

    在Java编程语言中,内部类(也称为嵌套类)是一种强大的工具,它可以提高代码的组织性和可读性。内部类可以直接访问外部类的所有成员,包括私有(private)成员,这使得它们在处理封装和实现特定逻辑时非常有用。...

    讲解Java中如何构造内部类对象以及访问对象

    在Java编程语言中,内部类(也称为嵌套类)是一种特殊类型的类,它可以被定义在一个外部类的内部。内部类有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。本篇将主要讨论如何构造内部类对象以及如何...

    java 成员内部类的使用规范

    7. **编译后的独立性**:Java编译后,内部类会被单独编译成`.class`文件,文件名为外部类名+内部类名,如`OuterClass$InnerClass.class`。 8. **使用场景**:成员内部类常用于实现复杂的逻辑封装,比如GUI编程中的...

    JAVA 内部类 PPT

    - 如果子类和父类都有内部类同名的情况,子类的内部类会覆盖父类的内部类,访问时需明确指出是父类的内部类,例如 `ParentClass.InnerClass inner = new ChildClass().new ParentClass.InnerClass();` 4. **匿名类...

    Java 内部类

    在这个例子中,`InnerClass` 是 `OuterClass` 的成员内部类,它可以访问 `outerField` 这个私有字段。 二、方法内部类 方法内部类,也称为局部内部类,是在一个方法内部定义的类。它们的作用域仅限于该方法,因此...

    Java中的内部类和匿名类

    第二种方法是使用 outerObject.new InnerClass(Constructor Parameters) 语法格式创建非静态内部类对象。在创建非静态内部类对象时,一定要先创建起相应的外部类对象。 非静态内部类对象的特点 非静态内部类对象...

    java内部类使用例子

    在这个"java内部类使用例子"中,我们将深入探讨这些类型,并通过实际代码来理解它们的工作原理。 首先,成员内部类是在外部类的成员位置定义的类,它可以访问外部类的所有成员,包括私有成员。成员内部类的实例与...

    java中内部类的分类及用法

    在java语言中,有一种类叫做内部类(inner class),也称为嵌入类(nested class),它是定义在其他类的内部。

Global site tag (gtag.js) - Google Analytics