Java のアクセス許可修飾子の例を示した詳細な説明
アクセス許可シンボル:
(1) public:
メンバーの場合: 同じパッケージ内であっても、別のパッケージ内であっても、他のクラスはそれらにアクセスできます。
クラスの場合: 同じことが当てはまります。
(2)friendly:
メンバーに対して、私はいつもこう言います: クラスのメンバーに権限の変更がない場合、彼らはデフォルトのパッケージ アクセス権限を持ちます。これは、Friendly で表されます。Friendly はキーワードではないことに注意してください。 Java はこちら これは私が好きな表現方法です。同じパッケージ内の他のクラスはそれにアクセスできますが、パッケージの外にはアクセスできません。パッケージを使用しない同じフォルダー内のクラスの場合、Java はまずこれらのクラスをディレクトリ
に属するデフォルトのパッケージとして自動的に表示し、クラス内のフレンドリーなメンバーは相互に呼び出すことができます。たとえば、次の 2 つのクラスは同じフォルダー内の 2 つのファイルにありますが、パッケージは導入されていませんが、同じデフォルト パッケージに属しています。
class Sundae{ //以下两个方法缺省为friendly Sundae(){} Void f() {System.out.println(“Sundae.f()”); } public class IceCream{ public static void main(String[] args){ Sundae x = new Sundae(); x.f(); } }
クラスの場合: 同じパッケージ内のクラスが使用できます。つまり、クラスはパブリックまたはフレンドリーとしてのみ宣言できます。
(3)プライベート:メンバー向け: メンバーが所属するクラス内でのみアクセスできます。
class Sundae{ private Sundae(){}//只能在Sundae class中被调用 Sundae(int i) {} static Sundae makASundae() { return new Sundae(); } } public class IceCream{ public static void main(String[] args){ // Sundae class中构造函数Sundae()是private, // 所以不能用它进行初始化 //Sundae x = new Sundae(); Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此调用 Sundae z = Sundae.makASundae(); } }
クラスの場合: クラスをプライベートとして宣言することはできません。
(4)protected:
クラス、データメンバー、コンストラクター、メソッドメンバーはすべてデフォルトの権限を使用できます。つまり、キーワードを記述しません。デフォルトの権限は同じパッケージ権限です。同じパッケージ権限を持つ要素は、それらが定義されているクラス内および同じパッケージ内のクラス内でのみ呼び出すことができます。
例: package c05.local;
import pack1.Cookie; //注意:在这里ChocolateChip继承了类Cookie,按道理bite()方法也在 //ChocolateChip中,可以用x.bite直接调用,但是不可以的,因为类ChocolateChip //和Cookie类不在一个包中,各自具有包访问权限,为了能够使用x.bite()必须要把 //Cookie方法的访问权限换成public或者protected,但是一旦换成public所有的人就 //可以访问了,这样达不到隐私的要求,所以设置成protected最好,既可以顺利访问,也可以 //避免外面的类调用,保护好隐私的作用 public class ChocolateChip extends Cookie { public ChocolateChip() { System.out.println("ChocolateChip constructor"); } public static void main(String[] args) { ChocolateChip x = new ChocolateChip(); x.bite(); // Can't access bite } } ///:~
package pack1; public class Cookie { public Cookie() { System.out.println("Cookie constructor"); } protected void bite(){System.out.println("bite");} }
クラスの場合: クラスを保護されたものとして宣言することはできません
クラス権限の変更については、以下に詳しい説明があります:
クラスのアクセス権限:
public : によってアクセスできますすべてのクラス。デフォルト: デフォルトはフレンドリーと呼ばれます。ただし、Java 言語にはフレンドリー修飾子はありません。この名前は C++ から来ています。デフォルトのアクセス許可は、パッケージレベルのアクセス許可です。アクセス権修飾子を書かずにクラスを作成した場合、デフォルトのアクセス権では、たとえこのクラスがインスタンス化できたとしても、同じパッケージ内のクラスにアクセスできます (もちろん、このクラスがインスタンス化機能を持たない場合は、そのクラスのインスタンス化機能がただし、たとえば、このクラスはパブリック コンストラクターを提供しません)。
注:
1. 各コンパイル単位 (クラス ファイル) は、パブリック クラスを 1 つだけ持つことができます 2. パブリック クラスの名前 (大文字と小文字を含む) は、クラス ファイルと同じ名前にする必要があります。
3. パブリッククラスはクラスファイル(*.java)内に存在する必要はありません。 customers顧客(おそらくこのクラスを呼び出すクラス)はこれに悩まされており、しばらくすると、元のアプローチを完全に変更し、古いバージョンを完全に放棄し、新しいバージョンに置き換える可能性があります。
4. クラスをプライベートにしたり、保護したりすることはできません。
5. 特定のクラスのオブジェクトを生成したくない場合は、そのクラスのすべてのコンストラクターをプライベートに設定できます。ただし、この方法でも、このクラスのオブジェクトを生成できます。つまり、クラスの静的メンバー (プロパティとメソッド) が生成できます。
First.java:
package Number; import Test.*; public class Frist extends Test { protected String s1 = "你好"; public static void main( String[] args) { String s2 = "java"; //System.out.println(s1); System.out.println(s2); Frist t = new Frist(); System.out.println(t.s); t.show(); return; } } Test.java: package Test; public class Test { protected String s = "hello test"; //可以被同包中的类访问以及子类访问,该子类可以是与包Test不同 public void show() { Test1 t1 = new Test1(); return; } } class Test1 { Test1() { Test t = new Test(); System.out.println(t.s); } }
出力:
java hello test hello test
Java のアクセス許可修飾子の例と詳細な説明については、PHP 中国語 Web サイトの関連記事に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。
