Java入門#4
時間あんまり無い・・・
つ~か目が痛い・・・
けど、まぁやるんじゃない?
とりあえず、一覧載せます。
表の○×はそれぞれどれに装飾できるかを表します。
例えばnativeなどは、メソッドにしか装飾できません。では、こんなところでそれぞれの使い方などを見ていきましょう。
アクセス修飾子によって次のように分かれます。
とまぁこんな感じ。
ようするにpublicは全てのクラスからの参照を許し、protectedは他ファイルでも定義したクラスを継承しているクラスからなら参照を許し、privateは定義したクラス内でしか参照できない。(←なしの時は他ファイルからの参照を禁止するということを前提に読んでくんさいm(_ _)m)
さて、ここではインスタンス化についても分かるようにjava.lang.Mathクラスのsin()メソッドを例にとりサンプルを見てみましょう。
詳しいことはクラスを解説するときにお話しますが、このようにstatic一つでプログラムの手間が大幅に省けることが分かりました。
初心者の間はほとんど遣うことが無いと思いますが、抽象クラスが必ずサブクラスを定義して不完全なメソッドの実体を定義してからでないとインスタンス化も使用も出来ないこと、そして一つ以上の抽象メソッドを含むことさえ覚えててくれれば、あとは中級者のうちに学べると思います。詳しいことは、リファレンスなどで検索してみてください。
過去記事、HTML版(準備中)はコチラ
今日書くことないんだよなぁ・・・
マラソン大会辛かったです。以上。
つ~か目が痛い・・・
けど、まぁやるんじゃない?
2-4.修飾子
いや~覚えるのもたるいし、書くのもたるいってなんなんだろうね、コレ(笑)とりあえず、一覧載せます。
修飾子 | クラス | インターフェイス | メソッド | コンストラクタ | ブロック | 変数 | 説明 |
---|---|---|---|---|---|---|---|
public | ○ | ○ | ○ | ○ | × | ○ | アクセス修飾子 |
protected | |||||||
private | |||||||
static | ○ | ○ | ○ | × | × | ○ | スタティック修飾子 |
final | ○ | × | ○ | × | × | ○ | ファイナル修飾子 |
abstract | ○ | ○ | ○ | × | × | × | 抽象修飾子 |
native | × | × | ○ | × | × | × | ネイティブ修飾子 |
synchronized | × | × | ○ | × | ○ | × | 同期修飾子 |
transient | × | × | × | × | × | ○ | 一時的修飾子 |
volatile | × | × | × | × | × | ○ | 揮発性修飾子 |
strictfp | ○ | ○ | ○ | × | × | × | 厳密浮動小数修飾子 |
表の○×はそれぞれどれに装飾できるかを表します。
例えばnativeなどは、メソッドにしか装飾できません。では、こんなところでそれぞれの使い方などを見ていきましょう。
アクセス修飾子
その名の通り、指定した変数やクラスのアクセス権をどの範囲(スコープ)まで許すかを決めます。アクセス修飾子によって次のように分かれます。
アクセス修飾子 | 自ファイル | 他ファイル | |||
---|---|---|---|---|---|
自クラス | サブクラス | 他クラス | サブクラス | 他クラス | |
public | ○ | ○ | ○ | ○ | ○ |
protected | ○ | ○ | ○ | ○ | × |
なし | ○ | ○ | ○ | × | × |
private | ○ | × | × | × | × |
とまぁこんな感じ。
ようするにpublicは全てのクラスからの参照を許し、protectedは他ファイルでも定義したクラスを継承しているクラスからなら参照を許し、privateは定義したクラス内でしか参照できない。(←なしの時は他ファイルからの参照を禁止するということを前提に読んでくんさいm(_ _)m)
スタティック修飾子
staticはそのクラスがインスタンス化されていなくても、そのクラスやメソッド、変数が参照可能であることを示します。さて、ここではインスタンス化についても分かるようにjava.lang.Mathクラスのsin()メソッドを例にとりサンプルを見てみましょう。
// 通常ならstatic宣言がされているメソッドなので…
x = java.lang.Math.sin(y); // 直接呼び出すことが出来る。
// もし、static宣言がなされていなかったと仮定すると…
java.lang.Math m = new java.lang.Math(); // これでインスタンス化しなければならない。
x = m.sin(y);
詳しいことはクラスを解説するときにお話しますが、このようにstatic一つでプログラムの手間が大幅に省けることが分かりました。
ファイナル修飾子
finalは上書きされないことを意味します。クラスであればサブクラスを定義できなくなり、メソッドであればサブクラスでメソッドをオーバーロードできなくなり、変数に用いれば誰もその変数を変更できなくなります。抽象修飾子
absractはクラス、インターフェイス、メソッドが不完全であることを示すことにより、サブクラスが必ず実装しなくてはならない機能を明確にしておくなどの目的で使われます。初心者の間はほとんど遣うことが無いと思いますが、抽象クラスが必ずサブクラスを定義して不完全なメソッドの実体を定義してからでないとインスタンス化も使用も出来ないこと、そして一つ以上の抽象メソッドを含むことさえ覚えててくれれば、あとは中級者のうちに学べると思います。詳しいことは、リファレンスなどで検索してみてください。
ネイティブ修飾子
nativeはメソッドがネイティブメソッド(型、メソッド名、引数の型などのような作法のみを定義するメソッド。他の言語を用いて中身を実装する必要がある。)であることを示します。以上。同期修飾子
synchronized修飾子つきのメソッドがマルチスレッド環境で実行されると、メソッドのインスタンスを対象に排他制御が行われる。一時的修飾子
transient修飾子つきの変数は一時的なものであり、シリアライズ(ディスクに保存したりネットワークで送信するために、オブジェクトの情報をバイトストリームに自動変換すること)の対象から除外される。揮発性修飾子
複数のスレッドから参照される可能性のある変数にvolatileをつけると、マルチスレッドで起こる同じ変数でもスレッドによって値が異なるという現象を回避することが出来る。厳密浮動少数修飾子
srictfpを指定したクラスでは、浮動小数点演算がプラットフォームに依存しない厳密な動作をすることが出来る。最後のほうは少し飛ばし目に行きましたが、最初のうちはアクセス修飾子とスタティック修飾子が分かっていればしばらくは大丈夫(筆者の個人見解)だと思うので頑張ってください。
過去記事、HTML版(準備中)はコチラ
[参考URL]
今日書くことないんだよなぁ・・・
マラソン大会辛かったです。以上。