検索
ホームページJava&#&チュートリアル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:

メンバーの場合: 同じパッケージ内のクラスはアクセスできます (パッケージ アクセス権)。基本クラスは、すべてのクラスではなく、保護されたクラスを通じて派生クラスへのアクセス権を基本クラスのメンバーに付与します (派生クラス アクセス)。許可)。

(5)default (デフォルトの権限)

クラス、データメンバー、コンストラクター、メソッドメンバーはすべてデフォルトの権限を使用できます。つまり、キーワードを記述しません。デフォルトの権限は同じパッケージ権限です。同じパッケージ権限を持つ要素は、それらが定義されているクラス内および同じパッケージ内のクラス内でのみ呼び出すことができます。

例: 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 サイトの関連記事に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

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

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

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

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

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

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

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

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。