内部类 vs. 公共内部类在Java中

huangapple go评论52阅读模式
英文:

Inner class vs public inner class in Java

问题

我意识到内部类可以声明为public。公共内部类的实际用途是什么,以及与没有使用public关键字声明的内部类有何不同?

public class OuterClass {
    class InnerClass {

    }
}

public class OuterClass {
    public class InnerClass {

    }
}
英文:

I realized inner classes can be declared as public. What are practical use cases of public inner classes and how are they different than inner classes declared without public keyword?

public class OuterClass{
    class InnerClass{

    }
}

public class OuterClass{
    public class InnerClass{

    }
}

答案1

得分: 1

代码部分不要翻译,只返回翻译好的内容:

通过方法/构造函数传递实例时的区别如下所示。

以下是一些代码,用于说明我的意思。

类 com.test.OutterClass.

package com.test;

public class OutterClass {

    // 公共类
    public class InnerClass {

    }
    
    // 非公共类
    class InnerClass1 {

    }
}

类 com.test2.TestClass

package com.test2;

public class TestClass {


     // 可行,因为 OutterClass.InnerClass 是公共的。
     TestClass(OutterClass.InnerClass t) {
     
    }

    // 不可行,因为 OutterClass.InnerClass1 不是公共的。
    TestClass(OutterClass.InnerClass1 t) {
    
    }

}
英文:

The difference is when passing an instance through a method/constructor.

Here is some code to show what I mean.<br><br>
Class com.test.OutterClass.

package com.test;

public class OutterClass {

    // public class
    public class InnerClass {

    }
    
    // not public class
    class InnerClass1 {

    }
}

Class com.test2.TestClass

package com.test2;

public class TestClass {


     // Works, because OutterClass.InnerClass is public.
     TestClass(OutterClass.InnerClass t) {
     
    }

    // Doesn&#39;t work because OutterClass.InnerClass1 is not public.
    TestClass(OutterClass.InnerClass1 t) {
    
    }

}

</details>



huangapple
  • 本文由 发表于 2020年9月15日 03:03:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/63890413.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定