内部类的种类

内部类的种类:(成员、局部、静态、匿名)

1.成员内部类
2.
局部内部类
3.
静态内部类
4.
匿名内部类

 

内部类的实现方式:

自己:

一种是类中类

Public class person

{

Class student

{

    Public void getSome()

{

     System.out.println(“我是内部类!”);

}

}

}

 

一种是匿名类:

Public class person

{

Public voidgetSome(new student(){

       System.out.println(“我是内部类!”);

});

}

 

网上正解:

1:成员内部类:

//成员内部类......相当于非静态方法

class MemberInner {

    private int a = 3;

 

    public class Inner2 {

        private int a = 2;

 

        public void doSomething() {

            // 调用外部类的属性

            System.out.println(MemberInner.this.a);// 这块要注意......很重要!!!

            System.out.println(a);

        }

    }

}

 

public class Test3 {

    public static void main(String[] args) {

        MemberInner.Inner2 inner2 = new MemberInner().new Inner2();// 非静态内部类要new

        inner2.doSomething();

    }

}

 

2:局部内部类;

//局部内部类......相当于局部变量

class LocalInner {

    public void doSomething(int b) {   //写到方法里面的类,有什么用呢?

        final int a = 3;// 只能访问final的变量

        class Inner3 {

            public void test(int b) {

                System.out.println(b);

                System.out.println(a);

            }

        }

        new Inner3().test(b);

    }

}

 

public class Test4 {

    public static void main(String[] args) {

        LocalInner inner = new LocalInner();

        inner.doSomething(4);

    }

}

 

3:静态内部类;

//静态内部类......相当于静态方法

class StaticInner{

   private static int a=3;

    public static class Inner{

        public void test(){

            System.out.println(a);

        }

    }

}

 

public class Test2 {

   public static void main(String[] args) {

       StaticInner.Inner inner=new StaticInner.Inner();//静态内部类直接调用

       inner.test();

   }

}

4:匿名内部类

Public class person

{

Public void getSome(new student(){

       System.out.println(“我是内部类!”);

});

}

 

 

内部类的好处:

   真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。
        内部类:一个内部类的定义是定义在另一个内部的类。
原因是:
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。
2. 对于同一个包中的其他类来说,内部类能够隐藏起来。
3.匿名内部类可以很方便的定义回调。
4.使用内部类可以非常方便的编写事件驱动程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值