美文网首页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内部类以及使用场景

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