内部类

来源:互联网 发布:silverlight调用js 编辑:程序博客网 时间:2024/06/05 19:11

内部类

内部类分为四种,分别是:成员内部类,静态内部类,局部内部类和匿名内部类。

  • 成员内部类:可以直接调用外部类方法和成员属性,可以直接创建内部类对象。
  • -

public class A {    private int a = 10;    private void show() {        System.out.println(a);    }    class B {        private int b;        private void show1() {            b = a + 10;            System.out.println(b);        }    }    public static void main(String[] args) {        A a2 = new A();        B b = a2.new B();        a2.show();        b.show1();    }}

输出结果:
10
20


  • 静态内部类:静态内部类就是用static修饰的内部类,静态内部类只能访问外部类的静态属性和静态方法。

public class B {    private int a = 100;    private static int b = 200;    void show() {        System.out.println("aaa");    }    static void show1() {        System.out.println("bbb");    }    static class C {        private int c = 10;        void show3() {            // c=a+10;   不能访问成员a            c = b + 10;            // show();   不能调用方法show()            show1();            System.out.println(c);        }    }    public static void main(String[] args) {        C c = new C();        c.show3();    }}

输出结果:
bbb
210
注意静态不能访问非静态。


  • 局部内部类:在方法内部定义的内部类称为局部内部类,局部内部类只对方法内有效,所以不能使用权限修饰符,只能用final、abstract,方法外不能创建局部内部类对象;用static修饰的方法中定义的局部内部类可以访问外部类的static成员。

public class C {    private int a = 10;    void show() {        class D {            private  int b=100;            void show1() {                System.out.println(b + 10+"我没执行");            }        }        System.out.println(a+10+new D().b+"我执行了");    }    public static void main(String[] args) {        C c = new C();        c.show();        System.out.println(c.a);    }}

输出结果:
120我执行了
10
局部内部类只能在方法中执行


  • 匿名内部类:匿名内部类只能使用一次,或者说如果需求只需要使用这个类一次,那么就创建一个匿名内部类;匿名内部类的创建就是再定义类的同时就创建了这个类。
public abstract class D {    abstract void eat();    public static void main(String[] args) {        D d = new D() {            @Override            void eat() {                System.out.println("吃");            }        };        d.eat();    }}

只能实现父类已有的方法,不能有自己独特的方法


                                                                                     ————SpringAndI
原创粉丝点击