您的位置:首页 > 编程语言 > Java开发

java的内部类

2015-08-23 11:12 567 查看
内部类:

      静态内部类:

                               静态内部内的访问修饰符可以使default  private  protect public,

                               一般情况下:内部类值服务于外部类通常会定义为 private

            public class Demo1 {
   //静态内部类
private static class Demo2{
public static void Test(){
}

}
   public static void main(String[] args) {
    Demo2 c = new Demo1.Demo2();//推荐这种方式创建内部类的对象
    Demo2 c2 =  new Demo2();
    c2.Test();
}
}

      成员内部类:

                          内部类的方法不能声明为静态的方法,除非成员内部内本身被static修饰(这样的话又是静态内部类)

                public class Demo2 {
public static void main(String[] args) {
Demo2 demo = new Demo2();
Demo2.B b =new Demo2().new B();
b.Test();
}
class B {
int a =3;
public void Test(){
System.out.println();
               }
}
}

                          

          

     方法内部类:

                               只能在声明的方法中可见,并且不能使用访问修饰符修饰

                               方法的内部类中只能定义非静态的成员

                               不能使用所在方法的局部变量,除非是常量(因为方法的生命周期和方法内部咧的生命周期又可以不一致)

            public class Demo3 {

public static void main(String[] args) {

}
public static void Test(){
int b =8;//不能被get方法使用
class A {
private  int a =0;
private void get(){
System.out.println("我是方法内部类的方法");
}
}
       A  a = new A();
       a.get();
}

}

      匿名内部类:其实也是方法内部类,仅限用一次的时候使用

     public class Demo4 {

public static void main(String[] args) {
   //接口式
Runnable run = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub

}
};
//继承式
Car car = new Car(){
@Override
public void run() {
System.out.println("子类的run");

}
};
Test2(new Car(){
@Override
public void run() {
System.out.println("参数式的run");

}
});
}
public static  void test2(Car car ){
  

}
calss Car {
   public void run(){
      System.out.println("父类")
   }
}

}

  通用的规范:静态的方法中不能直接使用非定态的属性或者方法;在非静态的方法中可以使用静态或者非静态的属性和方法;

                                这和java本身类的加载机制是有 关系的;

                                静态的方法或者属性在类加载的时候同时就已经初始化完成。所以可以供类直接使用.

 java类的访问修饰符:

            private  访问权限:本类

            default:如果不声明访问修饰符,默认的就是default,访问权限是包  和 类

            protect  包  类  子类

            public   所有的都可以访问

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: