内部类

作者: Vincent_Jiang | 来源:发表于2017-06-07 10:44 被阅读4次

静态内部类

public class External {
    private static int shared = 100;

    public static class StaticInner {
        public void innerMethod() {
            System.out.println("inner -> shared: " + shared);
        }
    }

    public void test() {
        StaticInner staticInner = new StaticInner();
        staticInner.innerMethod();
    }

    public static void main(String[] args) {
        External external = new External();
        external.test();
    }
}

成员内部类

public class External {
    private static int shared = 100;

    public class Inner {
        public void innerMethod() {
            System.out.println("inner -> shared: " + shared);
            // 可以通过 "类名.this.方法名" 调用,也可以直接通过方法名调用
            // External.this.action();
            action();
        }
    }

    private void action() {
        System.out.println("external -> action()");
    }

    public void test() {
        Inner inner = new Inner();
        inner.innerMethod();
    }

    public static void main(String[] args) {
        External external = new External();
        external.action();
        external.test();

        // 成员内部类是把类当做一个属性,所以成员内部类总是与外部相关联的。
        // 在外部使用时,它不能直接通过 "new External.Inner()" 的方法创建。
        // 必须先实例化一个外部类,通过 "外部类.new" 的方法实例化
        External.Inner inner = external.new Inner();
        inner.innerMethod();
    }
}

方法内部类

public class External {
    private int shared = 100;
    private static String S = "S";

    public void test(final int param) {
        final String s = "s";
        // 方法内部类定义在外部类的方法中。
        // 方法内部类只可以在定义的方法中被使用。
        class Inner {
            public void innerMethod() {
                // 方法内部类可以访问外部类的静态、非静态的方法和属性。
                // 假如该方法是静态方法,则只能访问外部类的静态变量和方法
                System.out.println("External -> shared: " + shared);
                System.out.println("External -> S: " + S);

                // 方法内部类还可以访问方法内中的局部变量,但是这些变量必须是 final 修饰的。
                System.out.println("External -> s: " + s);
                System.out.println("External -> param: " + param);
            }
        }

        Inner inner = new Inner();
        inner.innerMethod();
    }

    public static void main(String[] args) {
        External external = new External();
        external.test(200);
    }
}

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 内部类

    内部类 1.可以访问访问其外部类所有属性和方法,无需创建外部类对象 2.必须创建内部类对象,否则无法从外部类访问内...

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • java——内部类

    内部类 定义: 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内...

  • java之面向对象5

    方法内部类: 简而言之就是定义在外部类的方法内的类。 方法内部类只在该方法的内部可见,即只在该方法内可以使用。 方...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

网友评论

      本文标题:内部类

      本文链接:https://www.haomeiwen.com/subject/chuofxtx.html