0
0

More than 3 years have passed since last update.

[自分用メモ]修飾子について軽く勉強してみた

Last updated at Posted at 2020-08-05

自己紹介

Javaを勉強したての社会人一年目です。
昨日書いた以下の記事のコメントで、「アクセス修飾子」「class設計」というワードが出てきたので、それらについて勉強してまとめようとこの記事を書いています。
https://qiita.com/N46_myHearter/items/891b660b8748171779b1

Javaに関するアドバイス等募集中です。

修飾子とは

クラスメソッド変数に指定することができ、指定する修飾子によって様々な効果があるみたい。
自分は、Javaで修飾子だとpublic private等のアクセス修飾子ぐらいしかまだ知らなかったのですが、修飾子ってむっちゃあるんですね笑笑

アクセス修飾子abstractstaticfinalまでは知ってたが、transientvolatilesynchronizednativestrictfp ....って何や!?笑笑

アクセス修飾子

public、protected、privateがあり、アクセス修飾子を設計しているクラスやその変数、メソッドがどこからアクセス可能かを示しているみたい。

1. public

すべてのクラスからアクセス可能

2. protected

現在のクラスとそのサブクラスからアクセス可能

3. private

現在のクラスからのみアクセス可能

アクセスできる範囲は、public > protected > privateな感じかな。

abstract修飾子

abstractが設定されているクラス・メソッドは、抽象クラス・メソッドと言うみたい。。。(昨日勉強した抽象がさっそくでてきた...)
親クラスでabstractを設定している場合、その子クラスはオーバーライドしないといけない。

抽象メソッド

本体がなく、メソッド名や引数、戻り値だけで構成されたメソッド。

抽象クラス

抽象メソッドを含むクラス。
インスタンス化が出来なくなり、継承したサブクラスの作成が必要になる。

static修飾子

staticが設定されていると、インスタンス化せずにアクセス可能になる(C言語でも静的ななんちゃらであったから分かる気がする...笑笑)。
変数、メソッドに指定可能。
オーバーライドはできない。
クラス名.メンバー名でアクセス可能のこと。

インスタンス化

クラスをアクセス可能にして、利用できるようにすること(クラスを初期化するってことかな!?)。

final修飾子

finalが設定されていると、メンバーの上書き、サブクラスでのオーバーライド、extends句での継承等を禁止にするみたい。
クラスや変数、メソッドに指定でき、指定したものによって、意味合いが変わるみたい。

クラスに指定した場合

指定したクラスは継承不可になる。

変数に指定した場合

指定した変数は定数(変数宣言時、初期化必須となり、以後変数の値を変えることは不可)になる。

メソッドに指定した場合

指定したメソッドはオーバーライド不可になる。

オーバーライド

親クラスで定義しているのを、子クラスで再定義すること(継承みたいだね)。

transient修飾子

transientが設定されていると、シリアライズの対象外にするみたいです(シリアライズって何や...笑笑)。
変数に指定可能。

シリアライズ

オブジェクトをバイト配列に変換すること。

volatile修飾子

volatileが設定されていると、キャッシュの対象外にするみたいです。
変数に指定可能。

synchronized修飾子

synchronizedが設定されていると、メソッドを同期実行する
メソッドに指定可能。

同期実行

ほぼ同時に複数の呼び出しがあったときに、先に呼び出した方を優先して、その処理が終わるまで後から呼び出した方は待機させること。

native修飾子

nativeが設定されていると、Java以外の言語で実装されているということになる(Javaプログラム上で別の言語を使えるってことかな)。
メソッドに指定可能。

strictfp修飾子

strictfpが設定されていると、浮動小数点を厳密に処理することが可能みたい。
クラスやメソッドに指定可能。

おわり

あくまでも、Java初心者が勉強したことをメモしてるので、内容薄いです笑笑
修飾子多いので、まずアクセス修飾子からもっと勉強していこうと思っています(他は後回しww)。

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0