代码之家  ›  专栏  ›  技术社区  ›  Abhishek Keshri

内部类是否使封装的概念失效?

  •  3
  • Abhishek Keshri  · 技术社区  · 7 年前

    这个 private 访问修饰符的使用使得我们只能在类中使用相应的成员。但是使用内部类,我们可以定义一个方法来访问 私有的 外部阶级的成员。下面是代码:

    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    class Outer {
        private int x = 1;
    
        Inner getInner() {
            Inner inner = new Inner();
            return inner;
        }
    
        class Inner {
            int getX() {
                return x;
            }
        }
    }
    
    class Ideone
    {
        public static void main (String[] args) throws java.lang.Exception
        {
            Outer outer = new Outer();
            Outer.Inner inner = outer.getInner();
            System.out.println("Private x: "+inner.getX());
        }
    }
    

    这不违背 封装 ?

    2 回复  |  直到 7 年前
        1
  •  3
  •   memo    7 年前

    使用私有访问修饰符,以便我们可以使用相应的 成员只在类内。

    此外,由于您可以修改类的源文件,这意味着您可以访问它的所有内部构件。

        2
  •  1
  •   Igor O.    7 年前

    “内部”类是“胶囊”的一部分——外部类。所以它完全可以访问外部类的私有变量。封装的要点是对外部隐藏部分实现,“内部”类不是在外部,而是在类内部。