java中的内部类
1.成员内部类:
定义为位于另一个类的内部
class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } class Draw { //内部类 public void drawSahpe() { System.out.println("drawshape"); } } }
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private和static)
成员内部类不能有static属性
在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问
2.局部内部类
定义在一个方法或者一个作用域里面的类
class People{ public People() { } } class Man{ public Man(){ } public People getWoman(){ class Woman extends People{ //局部内部类 int age =0; } return new Woman(); } }
局部内部类不能有public、protected、private以及static修饰符
3.匿名内部类
scan_bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); history_bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } });
匿名内部类不能有访问修饰符和static修饰符
4.静态内部类
定义在另一个类内部,只不过在类的前面多了一个关键字static
public class Test { public static void main(String[] args) { Outter.Inner inner = new Outter.Inner(); } } class Outter { public Outter() { } static class Inner { public Inner() { } } }
不需要依赖于外部类
不可访问外部类的非静态资源