java - 内部类是否使封装的概念无效?

标签 java oop encapsulation

使用private 访问修饰符,以便我们只能在类中使用相应的成员。但是使用内部类,我们可以定义一个方法来访问外部类的 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());
    }
}

这不是违背了封装的概念吗?

最佳答案

The private access modifier is used so that we can use the respective member only within the class.

因为内部类是类的一部分,这仍然成立。对私有(private)数据的访问被限制在内部,因此保留了封装。 此外,由于您能够修改类的源文件,这意味着您无论如何都可以访问其所有内部结构。

关于java - 内部类是否使封装的概念无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097509/

相关文章:

java - Clojure 和 Java 之间的界限在哪里?

java - 如何缩放 JPanel 以适应 JFrame

java - Java 中抽象属性的解决方法

oop - 自动将对象扩展到某个继承类

c++ - 如何在多态 C++ 中实现这个类?

javascript - 如何使用 VS Code 调试 Node.js 中的私有(private)类字段?

java - 如何使 JTree 只显示字符串而不显示文件结构

Java -version 打印错误的版本

java - Java中如何将十六进制字符串转换为浮点型?

java - 在单元测试中访问私有(private)静态最终值的最佳实践