美文网首页
什么是内部类?内部类的作用

什么是内部类?内部类的作用

作者: 有腹肌的豌豆Z | 来源:发表于2020-08-31 08:37 被阅读0次
什么是内部类:
  • 将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。
成员内部类
  • 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。
  • 当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。
  • 成员内部类可以看成是外部类的一个成员,在成员内部类中无法声明静态成员,但static final(两个一起使用)字段是个例外
  • 我们知道加载类时,会先初始化静态成员,如果成员内部类有静态成员,那么内部类就会在外部类之前生成,而内部类是为外部类服务的,内部类在外部类之前就生成可能会脱离掌控。
  • 在实例化成员内部类时,成员内部类会持有一个外部类当前对象的引用,这样在成员内部类中就可以直接访问外部类的成员,即使是private修饰的。
  • 编译后Outer.Inner被重命名为Outer$Inner。
public class Outer {

    private String outerName="outer";
    private static String str1="我是静态的";
    private final String str2="我是final的";

    /**
     * 外部类无法直接访问内部类的成员,需要实例华内部类对象
     */
    private Inner inner = new Inner();

    public void show(){
        System.out.print(inner.innerName+"\n");
        inner.show();
    }

    /**
     * 内部类
     */
    class Inner{

        private String innerName="inner";

        // TODO 这个是个特殊
        private static final String s="";

        public void show(){
            // 可以直接访问外部类的成员
            System.out.print(outerName+"\n");
            System.out.print(str1+"\n");
            System.out.print(str2+"\n");
        }
    }

    public static void main(String[] args){
        Outer outer = new Outer();
        outer.show();
        // 实例化内部类
        Outer.Inner inner2 = outer.new Inner();
        inner2.show();
    }
}

局部内部类
  • 局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
匿名内部类
  • 匿名内部类就是没有名字的内部类
  • 匿名内部类不能有构造器,匿名内部类没有类名,肯定无法声明构造器。
  • 匿名内部类必须继承或实现一个接口,指定给new的类型为匿名类的超类型,匿名类不能有显示的extends或implements子句,也不能有任何修饰符。
  • 匿名内部类和成员内部类、局部内部类一样,也不能声明静态成员。
静态内部类
  • 静态内部类,有的书上也称为嵌套类,声明它时需要用static修饰符,静态内部类不同于前三种内部类,静态内部类不会持有外部类当前对象的引用,所以在静态内部类中无法访问外部类的非静态成员,可以这么说,静态内部类不依赖于外部类。
  • 指被声明为static的内部类,他可以不依赖内部类而实例,而通常的内部类需要实例化外部类,从而实例化。静态内部类不可以有与外部类有相同的类名。不能访问外部类的普通成员变量,但是可以访问静态成员变量和静态方法(包括私有类型)一个 静态内部类去掉static 就是成员内部类,他可以自由的引用外部类的属性和方法,无论是静态还是非静态。但是不可以有静态属性和方法。

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • 方法内部类

    定义在外部类方法中的内部类,也称局部内部类方法内部类1.定义在方法内部,作用范围也在方法内2.和方法内部成成员使用...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • java——内部类

    内部类 定义: 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内...

  • 2019-02-01——内部类

    1.静态内部类和成员内部类的用法?2.内部类的修饰符有什么用? 一.关于内部类的分类内部类广义上可分为四种:成员内...

  • 内部类

    内部类 在类的内部定义一个新的类 内部类的class文件名:外部类$内部类.class(为了区分是哪一个外部类的内...

  • Java 中的方法内部类

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

网友评论

      本文标题:什么是内部类?内部类的作用

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