局部内部类,匿名内部类

class Outter {
    int i = 1;

    public void method() {
        final int i = 2;

        class Intter {
            int i = 3;

            public void show() {
                int i = 4;
                System.out.println(i);
                System.out.println(this.i);
            }

        }

        Intter j = new Intter();
        j.show();

    }
}

class Demo1 {
    public static void main(String[] args) {
        Outter o = new Outter();
        o.method();
    }
}

局部内部类就是在方法中定义的一个类,它不会有static,private,public的修饰的,因为它们是修饰成员的修饰符。它可以被abstract,final修饰。
局部内部类中要想访问外部方法中的变量必须加一个final
因为外部类对象在调用它的方法后,它里面的变量会随着方法的出栈而消失,所以内部类再去访问它的时候就找不到。
当用final修饰的时候,该变量就会存在方法池中。调用的时候就能够找到。

abstract class Father {
    public abstract void show();
}

class Outter {
    public void method() {
        class Son extends Father {
            public void show() {
                System.out.println("哈哈");
            }
        }
        Son s = new Son();
        s.show();
        Father f = new Son() {
            public void show() {
                System.out.println("呵呵,长见识了吧");
            }
        };
        f.show();
    }
}

class Demo {
    public static void main(String[] args) {
        Outter o = new Outter();
        o.method();

    }
}

妈的各种类,真他妈的累,什么事情简单点不就好了?
你的局部内部类是可以继承的。在方法中创建对象再调用。之后创建外部类调用方法就可以通过局部内部类对象调用局部内部类的方法了。

什么又是匿名内部类?

Paste_Image.png

这是通过接口实现的匿名内部类,简单地说匿名内部类就是当你只想调用一次方法不想创建对象在进行调用,那么就用这种格式来调用,大大简化了代码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • Java 内部类 分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 1、成员内部类: 即作为外部类的一个成...
    ikaroskun阅读 5,016评论 0 13
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,577评论 0 11
  • 一、选种纯正,保证一代苗 。“利洋苗”生长均匀,规格整齐的原因就在此。 二、国内首创的生态育苗体系。小苗从无节幼体...
    3ea91ffc6b71阅读 4,818评论 0 0
  • 这些天大家都在聊《血战钢锯岭》,我在Doss的身上,些许又看到当年阿甘的影子。 先不去看其中关于某一个童年的经历或...
    程宇Alex阅读 2,885评论 0 0