面试题分析:8JAVA中4种内部类详细分析
2013-06-25 21:15
405 查看
1.静态内部类:
理解方法:大家可以把静态内部类想想成一个静态方法,这样理解就容易多了。
demo:
2.成员内部类
理解方法:大家可以将成员内部类理解成成员变量,使用的时候也是按照成员变量的方式使用的
demo:
3.局部内部类
理解:将局部内部类理解成一个局部变量即可,并且注意,局部内部类只能访问访问一个终态的变量,为什么呢?
解释如下:
(1)首先,即便是局部内部类,那也是一个类。
(2)我们的局部内部类没有初始化的时候,怎么知道局部变量的值是什么呢?这里涉及到了jvm大家不理解也没有太多的关系
4.匿名内部类
理解:匿名内部类就是没有名字的内部类
使用方法:
public void method(new Father(){.....})
{
}
理解方法:大家可以把静态内部类想想成一个静态方法,这样理解就容易多了。
demo:
package com.InnerClass; /** *auther:fighter24h *email:645707787@qq.com *静态内部类 */ public class StaticClassDemo { public static void main(String[] args) { // 调用静态内部类 Demo.Inner inner = new Demo.Inner(); inner.sayHallo(); } } //静态内部类测试 class Demo { public static int data = 4; /** * * @author fighrer24h *静态内部类: *大家可以把静态内部类想想成一个静态方法来使用 */ public static class Inner { public void sayHallo() { System.out.println("hallo"); } } }
2.成员内部类
理解方法:大家可以将成员内部类理解成成员变量,使用的时候也是按照成员变量的方式使用的
demo:
package com.InnerClass; /** *auther:fighter24h *email:645707787@qq.com */ public class MemberInnerClass { public static void main(String[] args) { MemberClassDemo mcd = new MemberClassDemo(); // 成员内部类的使用方法 /** * 将成员内部类理解成一个成员变量即可: * 可以这样想: * 如果对象没有外层的类没有实例化,我们是没有办法使用我们的public的成员变量的 * 所以,我们首先要初始化我们外层的类 * 然后,由于我们的“成员是一个类”,所以,我们使用的方式应该是new出来 * 那么应该如何new呢?既然是当成一个成员来用,当然是按照如下的方法使用了! */ mcd.new MemberClass().say(); // 或者 MemberClassDemo.MemberClass inner = new MemberClassDemo().new MemberClass(); inner.say(); } } //成员内部类的定义方法 class MemberClassDemo { private String message = "hallo"; /** * @author fighter24h *将成员内部类理解成一个成员变量即可! */ public class MemberClass { public void say() { System.out.println(message); } } public class MemberClass2 { private String message = "word"; public void say() { // 此时我们访问的是 "word" System.out.println(message); // 而如何访问外部类与内部类同名的变量呢?使用如下方法即可 , 此时访问的是 "hallo" System.out.println(MemberClassDemo.this.message); } } }
3.局部内部类
理解:将局部内部类理解成一个局部变量即可,并且注意,局部内部类只能访问访问一个终态的变量,为什么呢?
解释如下:
(1)首先,即便是局部内部类,那也是一个类。
(2)我们的局部内部类没有初始化的时候,怎么知道局部变量的值是什么呢?这里涉及到了jvm大家不理解也没有太多的关系
package com.InnerClass; /** *auther:fighter24h *email:645707787@qq.com *局部内部类 */ public class LocalClassDemo { public static void main(String[] args) { LocalClass lc = new LocalClass(); lc.say(); } } class LocalClass { public void say() { /** * * @author fighter24h *局部内部类: *将局部内部类理解成一个局部变量就可以了 *局部内部类使用较少,由于局部内部类类似于一个局部变量 *所以我们没有办法在外部访问到局部变量 */ class Demo { public void sayWhat() { System.out.println("Local Inner Class"); } } /** * 所以,局部内部类的使用也只能是如下方法 */ Demo demo = new Demo(); demo.sayWhat(); } }
4.匿名内部类
理解:匿名内部类就是没有名字的内部类
使用方法:
public void method(new Father(){.....})
{
}
相关文章推荐
- 【Java面试题】5 Integer的int 的种种比较?详细分析
- java中的内部类详细总结
- java动态代理实现与原理详细分析
- java 内部类简单分析
- java---面试题---.java"源文件中可以包括多个类(不是内部类)
- 详细分析Java中断机制详细
- 一些Java面试题深入分析
- Java连接MySQL数据库详细分析
- java android面试题分析总结《一》
- 一道经典的java面试题分析
- 只有面试官想不到,没有我归纳不出 超详细的Java面试题总结
- Java开发之内部类对象的创建及hook机制分析
- JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用
- java中内部类面试题
- 详细分析Java中断机制-转载
- BTA 常问的 Java基础40道常见面试题及详细答案
- Java开发人员面试题分析汇总
- java String类常量池分析及"equals"和"==”区别详细介绍
- Java 内部类分析
- java 4种内部类解析