内部クラスは、カプセル化の概念を無効にできますか?

アビシェークKeshri:

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());
    }
}

それは、の概念に反するませんカプセル化

メモ:

我々は唯一のクラス内の各メンバを使用できるように、プライベートアクセス修飾子が使用されています。

内部クラスは、クラスの一部であるため、これはまだが成り立ちます。個人データへのアクセスは、内に閉じ込められるので、カプセル化が保存されています。あなたは、クラスのソースファイルを変更することができますので、また、それはあなたが、とにかくそのすべての内部へのアクセス権を持っていることを意味します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=206205&siteId=1