2

これらのアクセス レベルが Java で可能かどうかを教えてください。

質問1:

From same class:                yes
From subclass same package:     yes
From any class same package:    no
From subclass outside package:  no
From any class outside package: no

および質問 2:

From same class:                yes
From subclass same package:     yes
From any class same package:    no
From subclass outside package:  yes
From any class outside package: no

アクセス修飾子 (public/private/default/protected) のいずれも、上記の一連の制御を提供しません。

例: 同じクラス内でのみアクセスできるプライベート メンバーがあります。最初の質問で述べたように、アクセス制御を与えるにはどうすればよいですか?

4

7 に答える 7

2

どの Java スコープも要件に適合しません。

于 2012-09-18T06:36:41.067 に答える
1

Java で使用可能なアクセス指定子が要件に一致しません。

に区別はありません

From subclass same package:      
From subclass outside package:    
于 2012-09-18T06:40:18.087 に答える
0

ここでそれらをすべて見つけることができるはずです: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

于 2012-09-18T06:25:55.617 に答える
0

この内訳は、答えを決定するのに役立ちます。

From same class:                 //private, default, protected, public
From subclass same package:      //default, protected, public
From any class same package:     //default, protected public
From subclass outside package:   //protected, public
From any class outside package:  //public
于 2012-09-18T06:26:03.420 に答える
0

いいえ、ご希望の 2 アクセス レベル要件を満たすことはできません。

Java には、public、default、protected、private の 4 つのアクセス レベルしかありません。探しているものと一致するものはありません。

于 2012-09-18T06:37:25.310 に答える
0

別のパッケージ内のサブクラスに別のアクセス レベルを与えることはできません。

可能な唯一の回避策は、パッケージを再構築することです:-(

于 2012-09-18T07:15:29.047 に答える
0

Yes, It's possible. but as mentioned above, it's not achieved by simply using the default available access modifiers. you need to add a getter to control the access to your attribute or method.

package house;

public class Father {
    private String secret = "I am your father";

    // for Q1 use default, for Q2 use protected
    protected String getSecret() {
        if(this.getClass().getName() != "house.Father") return secret;
        else return "some talk about the weather...";
    }
}

This getter allow the access by inheritance exclusively, and a direct access to the private attribute is always available. but the access by reference is denied.

于 2016-12-04T06:27:02.777 に答える