Javaの修飾子って何があったっけ?っていう備忘録

http://www.tohoho-web.com/java/modifier.htmを参考にさせていただきました。こちら見れば解決しそう。ちょっと噛み砕いたりした。

Javaを教える機会でprotectedとかstaticとか何?????みたいな質問がきた時に便利なようにまとめておこうと思ってかく。



アクセス修飾子

クラス、インタフェース、メソッド、コンストラクタ、変数の修飾子として利用できます。

  • public
  • protected
  • (何も書かない)
  • private

※サブクラス:継承関係にある子クラス


static

使用可能:クラス、インターフェース、メソッド、変数

クラスが何もインスタンス化されていない状態で参照可能であることを示す。static化しない場合はnewしてインスタンス化する必要がある。

e.g.) public static void main(String[] args){}


final

使用可能:クラス、メソッド、変数

上書きされないことを示す。クラスであればサブクラスを作成できない。メソッドであればオーバーロードできない。変数であればプログラム内で変更しないことを示す。

e.g.) final 型 メソッド名(引数) {}


abstract

使用可能:クラス、インターフェース、メソッド

抽象的なものであり、不完全であることを示す。abstract状態のものは必ずサブクラスなどでオーバーロードしなければならない。abstract状態のものはインスタンス化することはできない。

全てのメソッドがabstractのクラスのことをInterfaceと呼ぶ。

e.g.)abstract void test();


native

使用可能:メソッド

native は、メソッドが ネイティブメソッド であることを示します。

※ ネイティブメソッド : javaではない言語で書かれたメソッドのこと

e.g.) native void test(){}


synchronized

使用可能 : メソッド、ブロック

排他制御を行う修飾子。複数のプロセスやスレッドが同時に入ることを防ぐことができる

参考:https://qiita.com/leebon93/items/c7f2ac357f36930ff77f

e.g.) synchronized void test(){}


transient

使用可能:変数

オブジェクトをネットワーク間で通信などする際にバイト配列に変換することをシリアライズと呼び、Javaでは標準で全ての変数をシリアライズ対象とする。このtransientを使用すると変数をシリアライズ対象から除外することができる。

参考:http://java-code.jp/126


volatile

使用可能:変数

スレッド(処理を実行する流れ)が複数同時に流れる時をマルチスレッドと呼ぶ。変数をコピー等する際、メモリに書き戻さないことによってスレッドによって変数の値が異なる場合がある。そのため、複数のスレッドから参照される変数の場合、volatile修飾子を使用することで、これを防ぐことができる。


strictfp

使用可能:クラス、インターフェース、メソッド

float や double の浮動小数点演算が少々速度が落ちるもののプラットフォームに左右されない厳密な動作をすることができる。


const

使用可能:定数

Cなどの言語で変更することのできない定数を表す。現在は使用されない?



目的

- 修飾子を一覧する

- どんな役割があるのかをまとめる

今のこと。

ふと自分の歩みを振り返る場所が欲しいと思ったのでブログを書きます - 衝撃的なこと - 備忘録 - その日初めてしたこと - 週、月まとめ を書いていきます

0コメント

  • 1000 / 1000