JAVA基础补漏--内部类
成员内部类
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();
    }
}
JAVA基础补漏--内部类的更多相关文章
- java基础之 内部类
		Java中的内部类共分为四种: 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类loca ... 
- Java基础(53):内部类(转)
		java中的内部类总结 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行 ... 
- Java基础(五)--内部类
		内部类简单来说就是把一个类的定义放到另一个类的定义内部 内部类分为:成员内部类.局部内部类.匿名内部类.静态内部类 成员内部类:最常见的内部类 public class Outter { privat ... 
- java基础之 内部类 & 嵌套类
		参考文档: 内部类的应用场景 http://blog.csdn.net/hivon/article/details/606312 http://wwty.iteye.com/blog/338628 定 ... 
- java基础随笔-内部类
		今天来复习下内部类的一些基础知识. 首先是内部类的分类: 1.成员内部类 2.静态内部类 3.匿名内部类 4.局部内部类 下面逐一来介绍下. 首先是成员内部类,就是将内部类作为一个成员变量来处理.具体 ... 
- java基础语法-内部类与匿名内部类
		1.成员内部类(声明在类内部&&方法之外) class Person{ String name = "韩梅梅"; int age; class Bird{ Stri ... 
- JAVA基础补漏--基础数据类型与引用数据类型
		==在不同数据类型中意义不同. 在基础数据类型中,表示的是数值的比较. 在引用数据类型中,表示的是内存地址值的比较. 一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit), ... 
- JAVA基础知识|内部类
		一.什么是内部类? 内部类(inner class)是定义在另一个类中的类 为什么使用内部类? 1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据 2)内部类可以对同一个包中的其他类隐藏 ... 
- Java基础加强-内部类及代理
		/*内部类是一个编译时的概念,*/ 常规内部类.静态内部类.局部内部类.匿名内部类 1.常规内部类(常规内部类没有static修饰且定义在外部类类体中) 1.常规内部类中的方法可以直接使用外部类的实例 ... 
随机推荐
- OSX终端 命令行的一些基本操作
			本文转载至 http://blog.csdn.net/xdrt81y/article/details/24058959 osx终端命令 OSX终端 命令行的一些基本操作终端 命令行的一些基本操作很多朋 ... 
- MVC结构简介
			本文编译自J2EE的相关文档.MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征.这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易. ... 
- noip2006 金明的预算
			题目链接:传送门 题目大意:略.. 题目思路:其实单就这道题来说,一个主件最多两个附件,且附件不再包含附件,所以很简单,但是如果主件的附件无限制,附件也可包含无限制的附件,应该怎么做? 首先推荐一篇论 ... 
- VMware虚拟机Bridged(桥接模式)
			转载于:https://www.linuxidc.com/Linux/2016-09/135521.htm vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT ... 
- css生成三角形
			转载:http://www.cnblogs.com/lhb25/p/css-and-css3-triangle.html Triangle Up 1 2 3 4 5 6 7 #triangle ... 
- 170227、java分布式系统开关功能设计(服务升降级)
			首先讲一下开关的由来,例如东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A.B.C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时 ... 
- c#读取excel到dataset
			public DataSet TransExcelToDataSet(string fileName, List<string> sheetNames) { OleDbConnection ... 
- Es 中一个分片一般设置多大
			百度Elasticsearch-产品描述-介绍-百度云 https://cloud.baidu.com/doc/BES/FAQ.html#.2C.BB.93.08.C9.7E.2F.A3.E7.35. ... 
- 亚马逊 MWS 开发者指南  漏桶算法
			流量控制与令牌桶算法|James Pan's Blog https://blog.jamespan.me/2015/10/19/traffic-shaping-with-token-bucket 服 ... 
- 使用jQuery操作Cookies
			转载自: https://www.cnblogs.com/yonge/articles/2698106.html Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的 ... 
