java四种内部类的简单分析

一、内部类:
1.静态内部类:
1.必须以static关键字标注
2.只能访问外部类中的静态的成员变量或者是静态的方法
3.访问一个内部类使应该这样outerClass.innerClass inter = new outerClass.innerClass();不能直接实例化内部类
2.成员内部类:
1.定义在一个类的内部,但是没有static关键字修饰
2.生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
3.对外部类变量的引用outClass.this.variale
4.可以访问外部类的静态与非静态方法
3.局部内部类:
1.局部内部类指的是定义在一个方法中的类
2.只有在当前方法中才能对局部内部类里面的方法以及变量进行访问
3.局部内部类只能访问其所在方法的final类型变量
4.匿名内部类:
隐式的继承一个父类或者是实现某个接口


举例说明:

1.

package tp85.innerClass;


public class StaticDemo
{
public static void main(String[] args)
{
BB.AA ba = new BB.AA();
ba.put();
}

}
class BB
{
int a = 1;
static int b = 2;
static class AA
{
void put()
{
System.out.println("helloword");
//只能访问其外部类的static变量
//System.out.println(a);
System.out.println(b);
}
}
}


2.

package tp85.innerClass;

public class MenberDemo
{
public static void main(String[] args)
{
//成员内部类的实例化比较特殊,如下所示
DD.CC dc = new DD().new CC();
dc.put();
}
}
class DD
{
int a = 1;
static int b = 2;
class CC
{
void put()
{
System.out.println("helloword");
//能访问其外部类的static变量或者是非静态的变量
System.out.println(a);
System.out.println(b);
}
}
}


3.
package tp85.innerClass;

public class PartDemo
{
public static void main(String[] args)
{
FF ff = new FF();
ff.put();
}
}
class FF
{

void put()
{
//只能是final类型的
final int b = 2;
class EE
{
int a = 1;
void print()
{
System.out.println("print");
System.out.println(b);
}

}
new EE().print();// 只有在同一方法下才能实例化此类型的内部类
}
}
4.


package tp85.innerClass;

public class StaticDemo
{
public static void main(String[] args)
{
BB.AA ba = new BB.AA();
ba.put();
}

}
class BB
{
int a = 1;
static int b = 2;
static class AA
{
void put()
{
System.out.println("helloword");
//只能访问其外部类的static变量
//System.out.println(a);
System.out.println(b);
}
}
}







你可能感兴趣的:(java)