美文网首页JAVA基础
Java内部类以及使用场景

Java内部类以及使用场景

作者: 在岁月中远行 | 来源:发表于2022-05-19 23:53 被阅读0次

内部类:定义在另一个类中的类,它体现了一种代码的隐藏机制和访问控制机制。当往往只有外部类调用此类时,所以就没必要专门设置一个JAVA文件存放这个类。

分为 成员内部类,局部内部类,静态内部类,匿名内部类。

package com.example.aaaa;

import android.util.Log;

public class Outer {

public int num;

    //成员内部类

    private class Inner{

private Stringname;

    }

public void fun(){

class Inner2{//局部内部类

            private int num =2;

        }

Inner2 inner2 =new Inner2();

        System.out.println(inner2.num);

    }

static class Inner3 {//静态内部类不持有外部类引用

        public void getMethod () {

}

}

public static void main() {

Outer inner4 =new Outer() {//匿名内部类

            public void func () {

System.out.println("2");

            }

};

        Outer outer =new Outer();

        Inner inner = outer.new Inner();

        Log.d("tanlin", inner.name);

    }

}

2 Java 提供的两种方法让我们实现多重继承:接口和内部类

内部类可以继承一个与外部无关的类,从而保证内部类的独立性,正是这一点,多重继承才得以实现。

从实现代码和输出结果可以发现,儿子继承父类,变得比父亲更加强壮;同时也继承了母类,只不过友好指数下降。

为什么内部类会持有外部引用。而静态内部类不会呢

public class MyClass {

    private static class MyInnerClass {

        private String innerString;

        public MyInnerClass( ) {

        }

        public MyInnerClass(String innerString ) {

            this.innerString = innerString;

        }

    }

}

生成字节码文件.class文件

classMyClass$MyInnerClass

{

private String innerString;

public MyClass$MyInnerClass() {}

public MyClass$MyInnerClass(String paramString)

  {

  this.innerString = paramString;

  }

}

而如果是静态内部类:

class MyClass$MyInnerClass

{

  private String innerString;

  public MyClass$MyInnerClass(MyClass paramMyClass) {}

  public MyClass$MyInnerClass(MyClass paramMyClass, String paramString)

  {

    this.innerString = paramString;

  }

}

结论:如上,默认为内部类加上了外部类的引用

相关文章

  • Java内部类以及使用场景

    内部类:定义在另一个类中的类,它体现了一种代码的隐藏机制和访问控制机制。当往往只有外部类调用此类时,所以就没必要专...

  • Kotlin-Object关键字作用

    Object关键字使用场景:匿名内部类、单例、伴生对象。 匿名内部类 Kotlin匿名内部类定义使用跟Java类似...

  • android内存泄漏总结

    本文主要总结Android开发中发生的内存泄漏场景,发生的原因,以及解决方案。 目录 Java内部类隐式持有外部类...

  • 内部类与外部类的区别和联系

    java:内部类与外部类的区别和联系 注意事项一:在内部类中可以随意使用外部类的成员方法以及成员变量。 众所周知...

  • java:内部类与外部类的区别和联系

    本文转载自: java:内部类与外部类的区别和联系 注意事项一:在内部类中可以随意使用外部类的成员方法以及成员变...

  • 内部类

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

  • 18.Kotlin对象表达式深入解析

    对象表达式(object expression) Java当中匿名内部类在很多场景都得到了大量使用。Kotlin的...

  • Java 内部类和泛型的理解

    Java 内部类 Java非静态内部类持有对外部类的引用,可以访问外部类的状态使用方法 OuterClass.th...

  • Java 中的方法内部类

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

  • PHP转JAVA的记录

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

网友评论

    本文标题:Java内部类以及使用场景

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