接口  抽象类 不能实例化

一个类镶嵌在另一个类中,那么这个类叫做内部类,包含内部类的类称为外部类

内部类相当于外部类的成员变量或方法

public class Outer{
private String out_string="这是外部类的私有属性";
public void useInner(){
Inner in= new Inner();
in.print();
}
//创建内部类
class Inner{
public void print(){
System.out.println(out_string);
    }
  }
}

public class InnerTest{ public static void main(String[] agrs){ Outer out=new Outer; out.useInner(); }}

 

内部类的构建:

   Outer out =new Outer();//外部类

Outer.Inner in= out.new.Inner();//内部类

in.println();

public class InnerTest{
public static void main(String[] agrs){
Outer out=new Outer();
//out.useInner();
Outer.Inner in=out.new Inner();
in.println();
}
}

 

 

                                                               匿名内部类

成员内部类  :public class Outer{

...

                   class Inner{

    }

}

public classTestInner{
public static void main(String[] agrs){
OuterI outer=new OuterI(){
@Override
public void show(){
System.out.println("这是匿名内部类的show方法");
}
};
outer.show();
}
}
interface OuterI{
public void show();
}
}


                                                                 局部内部类

在类的局部位置定义

在局部内部类里访问外部类的所有成员变量

public class TestInner{

}
class Outer{
private String name;
public void eat(final int i){
class Inner{
public void innerEat(){
System.out.println(name);
System.out.println(i);
}
} }
}

                                                                       静态内部类

在内部类前添加static 修饰符

静态内部类中可以声明static成员变量;非静态内部类中不可以

静态内部类不可以使用外部类的非静态成员变量

创建静态内部类的对象,不需要其外部类的对象

 

非静态内部类的构建:

   Outer out =new Outer();//外部类

Outer.INner in= out.new.Inner();//内部类

静态内部类的形式:

OuterInner i=new Outer.Inner();