JAvaでは無視しやすい細部

1723 ワード

private、public、protectedという修飾子の具体的な概念を聞けば、きっと答えられると思います.ところで、デフォルトのアクセス権としては、これらの修飾子がない場合(同じパッケージでアクセス可能)がありますが、なぜprivateが現れたのか考えたことはありませんか?private修飾は現在のクラスにのみアクセスされ、現在のクラスが継承されてもエクスポートクラスにはアクセスできません(これもprotectedとの唯一の違いです);はい、字面から私たちはどういう意味か知っています.私がここで話したい重要な概念の一つは、プログラム開発の過程で2つのプログラマー、1つのクラスプログラマー、1つのクライアントプログラム、クラスプログラマーはもちろん1つのクラスを作成して、彼はクラスを作成して、クライアントプログラムに使用することができます.では、問題が来ました.クラスプログラマーが作成したクラスは、クライアントプログラマーに提供する際に、クライアントプログラマーがそのクラスのメンバーを誤って修正した場合、この万が一変更された場合、このクラスの使用に影響を与えるため、privateでカプセル化されたメンバーはクラスの最も弱い場所であり、外部からアクセスや修正されたくないことが多い.開発の過程で、私たちみんなは、時には一部のプログラマーの身分になることがあります.私はここでprivateを合理的に利用して、思想のあるプログラマーになることを望んでいます.次に、javaの多態特性についてお話しします.多態といえばよく知られていないに違いありません.この概念がぼやけている読者もいるかもしれません.ここでよくお話しします.例えば、人間(ベースクラスとして)、歌手(エクスポートクラス)、一般人(エクスポートクラス)、これらのエクスポートクラスにはsingSong()があります.歌い方、歌い方、歌い方が違うことがわかりますよね.では、次のように定義します.
Singer singer= new Singer();
AveragePerson  aPerson= new AveragePersong();




doSingSong( People people){

people.singSong();
};





このメソッドを呼び出します
doSingSong(singer);




では問題は、上の誰のsingSong()を呼び出したのかということです.方法は?もちろん歌手を呼び出したと言う人もいるかもしれませんが、この方法のパラメータタイプを見極めましたか?私が指定したのはPeopleで、なぜSingerタイプを伝えることができるのか、これは多態に関連して、クラスの親へのアップシフトをエクスポートします.そして上の方法もそうではありません.Singerです.そうします.AveragePersonがそうする必要があります.このコードの主な意味はあなたがPeopleであることを知っています.君はsingSongできる();では、やりましょう.しかし、細部の正確性に注意しましょう.doSingSongはなぜかやるべきことをしていますが、私たちはこのコードの中でタイプの判断をする必要はありません.皆さんは、どのようにこのようにすれば、新しい導出類が現れ、私たちはこの方法を実行するたびに判断しなければなりません.複雑ではありませんか.多態のためです.正しく処理できるようになり、コンパイラと実行システムは関連する詳細を処理します.さて、今日はまず皆さんにお話しします.基礎から着手し、対象向けの設計理念を理解し、皆さんも良いモードを設計し、優雅なコードをコードしたいと思います.