1.静态内部类:
class Outer
{
static class Inner
{
//和普通类没区别 可以定义一般类具备的所有内容
}
}
特点:除了嵌套在类内部,和普通类无区别
使用:只有类型声明上的区别:Outer.Inner oi = new Outer.Inner();
2.成员内部类:
class Outer extends Class1
{
class Inner extends Class2
{
//无法声明静态代码块、静态变量、静态方法,其他均可
}
}
1.
interface MyInterface
{
void start();
}
class Outer implements MyInterface
{
public void start()
{
System.out.println("类自身的方法");
}
class Inner implements MyInterface
{
public void start()
{
System.out.println("实现接口的方法");
}
}
}
2.特点:1.解决java类间多继承的问题
3.解决java实现方法同名冲突
注意事项:
1.成员内部类持有外部类的this对象引用
2.内外部类型成员变量同名时,做如下区分:外部类名:this表示外部类对象:如上 例Outer.this this表示内部类对象
3.局部内部类
1.
形如:
class Outer
{
public [static] [SuperClass | Interface] method()
{
// 一般出现在方法或代码块的内部
class MethodInner [extends SuperClass] | [implements Interface]
{
}
// 通常情况下方法会返回该类对象 供外部使用 所以一般会继承一个父类或实现一个接口
return new MethodInner();
}
}
2.特点
1.在方法内部出现,调用方法才会加载,必须向外提供该类对象以供使用,但是由于类型无法被外部获知,所以一般会继承类或实现接口
2.隐藏实现细节
使用:Outer outer = new
Outer();
SuperClass
Interface s | i = outer.method();