成员内部类

public class InnerClass {

    public static void main(String[] args) {

        System.out.println("+++++++++++++++++++++++");

        Outer.Inner oi = new Outer().new Inner();
oi.methodInner();
} }

public class Outer { int num = 10; public class Inner{ int num = 20; public void methodInner(){
int num =30;
System.out.println(num);
System.out.println(this.num);
System.out.println(Outer.this.num);
}
}
}

局部内部类

public class InnerClass {

    public static void main(String[] args) {

        Outer out = new Outer();
out.methodOuter();
} }

public class Outer { int num = 10; public void methodOuter(){ class Inner{ int num = 10;
public void methodInner(){
System.out.println(num);
} } Inner in = new Inner();
in.methodInner();
} }

权限修饰符

外部类:public / default

成员内部类:public protect default private

局部内部类:什么都不能用

局部内部类,如果希望访问所在方法的局部变量,这个局变量必是final的。如果这个变量不变,final可不写。

原因

1.new 的对象在堆内存中。

2.局部变量跟着方法走,在栈内部中。

3.方法运行结束后,立即出栈,局部变量会消失。

4.但是内部类的方法要使用,必须要new一个对象,new出来对象在内存中一直存在,直到垃圾回收,这时局部变量可能已经销毁了。如果要使用,就自己要拷贝一个,但如果变量总变,没有办法拷贝,如果是final,则可以直接拷贝。

public class Outer {

    public void methodOuter{

        final int num = 10;

        class Inner{

            public void methodInner(){

                System.out.println(num);
}
}
} }

匿名内部类

如果接口实现类(或者父类的子类)只使用一次,这时候可以省略类的定义,而使用匿名内部类。

格式:

接口类名称 对象 = new 接口名称(){

//覆盖重写所有抽象方法

}

public class main {

    public static void main(String[] args) {

        myInterface obj = new myInterface() {
@Override
public void method() {
System.out.println("Inner method");
} }; obj.method(); new myInterface(){ @Override
public void method() {
System.out.println("匿名对象使用匿名内部类");
}
}.method(); }
}

最新文章

  1. angularjs中ng-controller中绑定对象
  2. WebKit示例解读
  3. obout editor Absolute path for uploaded image
  4. 戴文的Linux内核专题:06配置内核(2)
  5. Nginx Location配置语法介绍、优先级说明
  6. List GetEnumerator
  7. table总结insertRow、deleteRow
  8. Snapchat
  9. C 语言学习guideline
  10. <六> jQuery 获得内容和属性
  11. 0x00000000该内存不能为read
  12. window 远程在Linux(centOS7.0)上安装JDK以及配置环境变量
  13. 【Android Developers Training】 10. 序言:支持不同设备
  14. YAML书写规范
  15. Bootstrap优秀模板-ColorAdmin.4.3.0
  16. js 手写 Promise
  17. 题目--统计一行文本的单词个数(PTA预习题)
  18. JAVA 多线程(4)
  19. Google Chrome 下载&绿化&增强
  20. 离开(切换)当前页面时改变页面title

热门文章

  1. Delphi StringReplace – 替换字符函数
  2. python中matplotlib绘图封装类之折线图、条状图、圆饼图
  3. Centos7 下Boost 1.61.0源码 配置开发环境
  4. responsive and functional programming RxJava
  5. 在VMW里安装Ghost操作系统遇到的问题及解决的办法
  6. 《深入理解Linux网络技术内幕》阅读笔记 --- 路由查找
  7. Linux学习笔记(4)磁盘分区(fdisk)、挂载与文件系统命令
  8. Java基础—内部类(转载)
  9. getElementsByClassName - 兼容详细介绍
  10. Apache和Nigix