グループに公開済み参加やあ!今日のレッスンでは、アクセス修飾子の概念を理解し、それらを使用する方法の例を検討します。「よく知る」という言い方は完全に正しくありません。あなたは前のレッスンでそれらのほとんどをすでによく知っています。念のため、最も重要な点を思い出してみましょう。修飾子アクセスは、ほとんどの場合、コードのさまざまな部分へのアクセスを制御するキーワードです。つのアクセス修飾子があります。制限的なものから最も「寛容」なものまでの順にリストします。(パッケージが表示される);保護されています。それぞれを見て、いつ役立つかを確認してみましょう。例を示します:)プライベート修飾子privateは最も制限的なアクセス修飾子です。データとメソッドの可視性を単一クラス内に制限します。この修飾子は、ゲッターとセッターに関するレッスンで知っています。}}前回のレッスンで検討しました。私たちはここで重大な間違いを犯しました。私たちはデータを公開しているため、他のプログラマーがフィールドに直接アクセスしてその値を変更することができました。...これらの値は何のチェックも行われずに割り当てられました。「」という名前の猫を作成できることを意味します。この問題を解決するために、ゲッターとセッターを使用し、さらにプライベート修飾子を使用してデータへのアクセスを制限しました。方法の最も一般的な例です。実際の仕事でも使われるでしょう。言い換えれば、この修飾子の主な目的は、プログラム内でカプセル化を実現することです。ちなみに、これはフィールドだけに当てはまるわけではありません。プログラムに非常に複雑な機能を実装するメソッドがあると想像してください。ハドロン衝突型加速器からデータを読み取り、このデータをテキストに変換し、ファイルに書き込んで印刷するとします。か所に書かないほうがよいでしょう。代わりに、機能を個別のメソッドに分割する必要があります。ファイルを出力します。最終的に、readDataFromCollider()メソッドははるかに単純になります。}}ただし、インターフェイスに関するレッスンで覚えているように、ユーザーは外部インターフェイスにのみアクセスできます。つのメソッドはその一部ではありません。つのメソッドに詰め込まないようにするために作成されました。ユーザーにこれらのメソッドへのアクセス権を与える必要はありません。ユーザーがコライダーを操作するときにConvertBytesToSymbols()メソッドにアクセスできる場合、おそらく単にこのメソッドに混乱し、それが何のためのものなのか疑問に思うでしょう。このメソッドで実行されるロジックは、ユーザーに公開されるインターフェイスの一部ではありません。readDataFromCollider()のみメソッドはインターフェイスの一部です。右!これらへのアクセスを制限するには、private修飾子を使用します。これにより、ユーザーを混乱させることなく、クラス内で平和的に作業を実行できるようになり、個々のメソッドのロジックを知る必要がなくなりました。次に制限的な修飾子がprotectedです。アクセス修飾子でマークされたフィールドとメソッドが表示されます。私たちのものと同じパッケージに含まれるすべてのクラス内。私たちのクラスを継承するすべてのクラス内で。最初は、これがいつ必要になるかを想像するのは困難です。protectedの使用例はprivateよりもはるかに少なく、非常に特殊です。諜報機関の秘密エージェントを表すAbstractSecretAgent抽象クラスと、このクラスとその子孫を含むtop_secretパッケージがあると想像してください。FBISecretAgent、MI6SecretAgent、MossadSecretAgentなどの具象クラスはこれを継承します。カウンターを実装します。プログラム内のどこかに新しいエージェントが作成されると増加します。0;}しかし、私たちのエージェントは秘密です!これは、それらが何個存在するかを彼らだけでなく他の誰も知る必要がないことを意味します。protected修飾子をagent_counterフィールドに簡単に追加できます。クラスや、top_secretパッケージにある他のクラスのインスタンスがその値を取得できるようになります。必要とする特殊なタスクです:)パッケージ可視修飾子リストの次はデフォルトのモディファイアで、パッケージ表示モディファイアとも呼ばれます。デフォルトでキーワードをすべてのフィールドとメソッドに適用するため、これはキーワードによって示されません。コードに次のように記述すると、次のようになります。変数には、このパッケージへの可視アクセス権が与えられます。何をするのか覚えておくのは簡単です。protected修飾子と同様に、その用途は制限されています。クラスを含むパッケージで使用されます。例を挙げてみましょう。「サービス」パッケージがあると想像してください。データベースを操作するさまざまなクラスが含まれています。CarServiceがあります。同じデータベースから車のデータを読み取るクラスと、その他のクラスです。それぞれが特定の種類のオブジェクトを処理し、データベースから対応するデータを読み取ります。{}しかし、データベース内のデータがある形式であり、それを別の形式で必要とすることは簡単です。20:32:59.390583+02...代わりに、最も単純なオブジェクトであるjava.util.Dateが必要です。この問題を解決するには、サービスパッケージ内で特別なMapperクラスを作成します。オブジェクトに変換する役割を果たします。単純なヘルパークラス。ClassNameとして宣言しますが、これは必須ではありません。Mapperとして宣言できます。この場合、サービスは引き続き機能しますが、サービスパッケージの外部には表示されません。mapper;}基本的な理由は次のとおりです。修飾子そして最後になりましたが、public修飾子です。args)を実行したときに出会いました。結局のところ、public修飾子はユーザーに何かを与えるために作成されました。プログラムのインターフェイスです。ロシア語のテキストを英語に翻訳できる翻訳プログラムを作成したとします。textInRussian)メソッドを作成しました。このメソッドにpublicという単語を付けたので、これがインターフェースの一部になりました。}}このメソッドを画面上の「翻訳」ボタンにバインドすれば完了です。ユーザーを対象としています。実際の例を挙げると、プライベートはテレビ内で発生するすべてのプロセスを表しますが、パブリックはテレビの管理に使用されるリモコンのボタンを表します。ユーザーはテレビがどのように構築され、どのように機能するかを知る必要はありません。on()、off()、nextChannel()、previousChannel()、増加ボリューム()、減少ボリューム()など。レッスンを視聴することをお勧めします。マスターできる完璧な方法です。基本的な理論のうち重要な範囲が紹介されています。ディベロッパーのキャリアなど、モチベーションアップにつながる要素を数多く取り入れています。