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() {
             
        }
    }
}
不需要依赖于外部类
不可访问外部类的非静态资源
 
posted @ 2019-01-23 10:10  君奉天  阅读(105)  评论(0编辑  收藏  举报