美文网首页
JAVA内部类理解

JAVA内部类理解

作者: 3ni | 来源:发表于2018-09-26 10:51 被阅读0次
public class A{
    ...
    private class B{
        //这就是一个内部类,在类A的里面又定义一个类B,则这个B就是一个内部类
    }
    ...
}

有下列几种内部类
成员内部类,局部内部类,匿名内部类,静态内部类

·什么是成员内部类?
上面的例子的B就是一个成员内部类,因为它是直接定义在一个类的内部,不是定义在类A的方法中的类,此时类A也叫类B的外部类。成员内部类(即B)可以无条件访问外部类(即A)的所有成员属性和成员方法(包括private成员和静态成员)
对于成员内部类的修饰可以用public, protected,private

·什么是局部内部类?

public class A{
    ...
    public void fun(){
        ...
        class B{
            //这是一个局部内部类,定义在A的方法里面的类
        }
        ...
    }
    ...
}

局部内部类不能有public, protected,private等修饰,因为局部内部类就像是方法里面的一个局部变量一样

·什么是匿名内部类?
那么什么是匿名类?

格式:new 父类(){子类内容};
这个父类是子类需要继承或者实现的外部的类或者是接口,new出来的直接是一个对象。

匿名类其实就是某一个类的子类。比较下面两个程序段

class A{
    //....
}

class B extends A{
    //...
}

class C{
    public static void main(String[] args){
        B b = new B();
    }
}
class A{
    //....
}

class C{
    public static void main(String[] args){
        A a = new A(){
            //...
        };
    }
}

解释一下这两个程序段
第一个很常规,B继承A,并在main中生成一个B的对象。
第二个有点不一样,乍一看就是利用类A,new了一个对象a啊,实际上,这里的a有点不一样,这里的a实际上是类A的子类(这里A的子类的名称java给隐藏了,所以叫匿名)new出来的对象,然后使其转为上转型对象(不知道上转型对象可以网上搜下,应该比较好懂)。所以,这里的a并不简单,那么和第一段程序有什么关系呢,第一段是B继承A然后可以重写一些方法,然后生成B的对象,进行一些操作。再看看第二段,如果我们直接在main里面的new A(){}的大括号里面重写A方法,然后生成一个A的子类的对象,然后进行操作是不是达到了第一段一样的目的,而且还不用写那么多。当然匿名类还有很多其它用途,读者可以网上搜搜,这里主要为理解什么是匿名类对主。
匿名类解释完了,那么什么是匿名内部类呢,这就很简单了,在一个类的内部使用匿名类就是匿名内部类,然而使用匿名类时必然是在某个类中直接用匿名类创建对象,因此匿名类就是一个内部类

·什么是静态内部类
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。它和类的静态成员属性有点类似,有兴趣可以了解一下静态成员。

如有错请及时留言

相关文章

  • java内部类访问外部类成员

    引用链接:深入理解Java中为什么内部类可以访问外部类的成员

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • PHP转JAVA的记录

    Java 数组 内部类 内部类的创建:内部类可以对包内其他类隐藏想实现一个接口时, 不想新建类文件 内部类可以访问...

  • 【Java】内部类与外部类的互访使用小结

    原博客链接:【Java】内部类与外部类的互访使用小结 内部类又称为嵌套类。可以把内部类理解为外部类的一个普通成员。...

  • Java内部类

    Java内部类,简单来说就是将一个类定义在另一个类或者方法里面,主要分为成员内部类,局部内部类,匿名内部类和静态内...

  • JAVA内部类理解

    有下列几种内部类成员内部类,局部内部类,匿名内部类,静态内部类 ·什么是成员内部类?上面的例子的B就是一个成员内部...

  • 面试后学习 -- Java内部类

    面试问到的一个Java内部类的问题,今天总结下。如果我理解有误,请指正,谢谢。 一个简单的内部类: Java为什么...

  • Java内部类

    Java内部类 大纲: java内部类有什么特点?为什么需要内部类? 非静态内部类持有外部类的引用 内部类的分类。...

  • 内部类

    内部类可以分为:非静态内部类;静态内部类;匿名内部类。 一、内部类 首先要说,Java为什么要使用内部类?java...

  • Java静态内部类

    Java静态内部类 博客分类: java 两种内部类 Java的内部类有两种,一种是静态内部类,另一种是普通内部类...

网友评论

      本文标题:JAVA内部类理解

      本文链接:https://www.haomeiwen.com/subject/vcfdoftx.html