11

重複の可能性:
データメンバーをクラスとサブクラスのみにアクセス可能にする方法

Javaでは、
保護されたメンバーは、クラス内、そのサブクラス、および同じパッケージに存在するすべてのクラスから
アクセスできますが、メンバーがクラスとそのサブクラスからのみアクセスできるようにしたい(c ++の保護されたメンバーのように)。

例::

class A
{
    protected void fun()
    {
        System.out.println("Hello");
    }
}
class B
{
    public static void main(String args[])
    {
        A a = new A();
        a.fun();        
    }
}

ここでは、BがAのサブクラスでなくても、Aのfun()にアクセスできます。

AのサブクラスではないすべてのクラスがAにアクセスできないようにするにはどうすればよいですか?

編集::私はJavaでこれを達成したいです。

4

3 に答える 3

9

Javaでは、これを行う方法はありません。

とは言うものの、パッケージ内のすべてのコードを(理想的には)制御するので、自分で使用しないように注意する必要があります。

于 2012-06-01T14:42:55.120 に答える
3

Javaでそれを行う方法はありません。保護されているとは、同じパッケージ内の継承者とクラスから見えることを意味します。ただし、パッケージ内で誰も新しいクラスを作成できないように、パッケージを封印することができます ( http://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html )。

于 2012-06-01T14:49:16.217 に答える
2

Java では、保護されているとは、「同じパッケージ内の継承者や他のユーザーがアクセスできる」ことを意味します。

C++ では、protected は「継承者がアクセスできる」ことを意味します。

Java でのパッケージのアクセシビリティのため、これらは実際には同等ではありません。

Java で C++ の保護を模倣できる唯一の方法は、独自のパッケージでクラスを宣言することですが、それはお勧めしません。

于 2012-06-01T14:48:54.790 に答える