内部类

内部类

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

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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值