Edited at

【Java】アクセス修飾子について学んだら、三大要素など基礎について学べた話

More than 3 years have passed since last update.

前回コメントをいただいて、確かになげっぱはいけないと思い、自分で調べられる範囲で調べてみました。

最近、Node-redなどをいじる機会があり、ますますJavaなどの言語の仕組みなど、知らなければならないことが多いと感じました。知らないより知っていたほうがいい。知識欲を増幅させていけ :punch:


オブジェクト指向 三大要素

まずオブジェクト指向を尊重すべき理由として、アップデートを容易にするという観点がある。

基軸を定め、アップデートされる箇所をクラスとして抽出し、プログラミングしてゆく。

変更の高そうな箇所に気を配り、組んでいく必要がある。


三大要素


  • カプセル化


    • クラスの変更や組み換えが容易

    • 予期せぬバグを防ぐ

    • 継承やポリフォーリズムで抽象的だったものをまとめあげて名前を付ける動作(?)



  • 継承


    • 「is a」関係

    • 親クラスAと子クラスBがあったとして、B is A

    • BをAとして扱うことができる

    • ○柴犬は犬である ×犬は柴犬である




継承は機能を受け継ぐためのものではありません。継承の本質は、犬や猫を「動物」という抽象概念としてまとめ上げられるインターフェイスなのです。

-- オブジェクト指向と10年戦ってわかったこと(Qiita)より



  • ポリモーフィズム


    • 多様態性

    • 抽象に対してプログラミングしていく

    • (ほかの2点に比べ理解不足)



なんとなく言っていることはわかるけど、実際にjavaをたくさんいじくれていないので、納得しがたい部分があります。

初めから具体的な形を作る前に、大きな機能の枠組みを作成して、そこから具体的な方向へ引っ張ってくるイメージなのかもしれない。

いくつか実践をしたあと立ち返る必要がある。何にしても基本・原則は大事。


アクセス修飾子について

どの範囲から参照可能なのかスコープを制御することができて、クラス、インタフェース、メソッド、コンストラクタ、そして変数の修飾子として利用できる。

修飾子はアクセス修飾子以外にも存在する

(入門モジュールでよく見たstaticなども修飾子である。)

3種類だと思っていたら、4種類でてきた。


  • private・・・同じクラス内からのみアクセス可能。

  • 指定なし・・・同一クラス、パッケージのみアクセス可能。


    • パッケージプライベート



  • protected・・・同一クラス、パッケージ、サブクラスのみアクセス可能。

  • public・・・どこからでもアクセス可能。

まだ活用法などパッとしないので、実践の中で理解が深まりそう。


クラス?パッケージ?サブクラス?

ちょっと理解がふわっとしてるので調べてみる。



  • オブジェクト(インスタンス)は、「鉛筆」とか「バナナ」とかモノ自体のことを表している。


  • クラスは、それらの特徴を記述している設計図のようなもの。鉛筆の色だったり、書くという機能だったりを記述している。


    • なんか、記号論のシニフィエとシニフィアンみたい。(ちょっと違うかな)

    • シニフィエ(能記)・・・「りんご」の文字だったり発声のこと

    • シニフィアン(所記)・・・「りんご」は赤い、甘い、果物だという特徴




  • パッケージ・・・クラスをひとまとめにしたもの。フォルダ的な感じ?


  • サブクラス・・・継承によってできた、スーパークラスの持つプロパティやメソッドを受け継いだクラス。オーバーライドによって上書きもできる。

基礎を調べられたのが収穫でした。

実際に手を動かして、Javaと触れてくなかで、また立ち返って理解を深めていきたいです、

参考:

すぐわかるオブジェクト指向(サルでもわかる 逆引きデザインパターン)

オブジェクト指向(IT専科)

オブジェクト指向と10年戦ってわかったこと(Qiita)

初心者のためのJava講座