您的位置:首页 > 职场人生

面试题分析:8JAVA中4种内部类详细分析

2013-06-25 21:15 405 查看
1.静态内部类:

理解方法:大家可以把静态内部类想想成一个静态方法,这样理解就容易多了。

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(){.....})

{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: