2017-11-17 2 views
1

あなたは、パッケージスコープのクラスがあるとしましょう:スコープ

class MyClass { 
} 

class MyClass { 
    public f() { ... } 
} 

class MyClass { 
    protected f() { ... } 
} 

の違いは何ですか
class MyClass { 
    f() { ... } 
} 

クラスはパッケージスコープであるため、関数publicまたはprotectedは何を行うか追加しますか?

パッケージスコープのクラスのための私の推論:それはパッケージであるので、あなたは、パッケージの外側からクラスを使用することはできません

  • はスコープ、そうpublicは追加効果がありません。
  • 同じ理由で、protectedは、パッケージ内にとどまる必要があるため、追加の効果はありません。
  • したがって、他の3つの修飾子(パッケージ,publicprotected)はすべて同じですので、privateのみが制限の影響を受けます。

これは間違いありませんか?

クラスがパッケージスコープであるときの変更の違いはわかりません。

+1

[Javaでは、デフォルト、パブリック、プロテクト、プライベートの違い](https://stackoverflow.com/questions/215497/in-java-difference- between-default-public-protected-and-プライベート) –

+1

@TrầnAnhNam私は変更の違いを理解しますが、クラスがパッケージスコープではないことを理解しています。 –

+0

この記事では、パッケージ内の修飾子でアクセス可能なスコープを示しています。あなたのクラスはパッケージスコープですが、そのサブクラスはそうでないかもしれません。 –

答えて

3

はい。公開クラスと保護クラスはデフォルトクラスでは冗長ですが、まだプライベートクラスには意味があります。

継承サイクルでは、直接的ではありませんが、間接的な子どもたちは他のパブリッククラスを介してアクセスする可能性があるため、ケースに便利です。

それ以外の場合は、クラス全体をパッケージで保護することに決めました。内側のアクセシビリティは意味を持ちません。

要するに、アクセシビリティの観点から、下段のレバーに対して上のレベルを選択しました。

+0

ご確認いただきありがとうございます! –