
今回は…
というテーマでお送りします。
今回から、Java入門もオブジェクト指向の活用編です。
オブジェクト指向の3大要素を中心に お伝えしていきますね。

今回も、よろしくお願いします。

ジックリ、取り組んでいきます。
【1】 パッケージ宣言

パッケージとは
クラスをグループ分けする仕組みのことです。
チーム開発など、扱うクラスが多くなった場合に
パッケージ単位で分けていくと 管理がしやすくなります。
イメージ的には、このような感じですね…。

クラスを まとめて
パッケージにしていると考えましょう…。
パソコンのファイルを
フォルダに分けておく感じですね。
実際に Javaの場合、パッケージは
フォルダに配置して管理することとなります。
クラスが属するパッケージを 宣言するためには…
Javaソースファイルの先頭で
package宣言 する必要があります。
書き方は、このようになります。
package パッケージ名;
また、パッケージの中にパッケージを作って
管理することもできます。
この例では パッケージ packAの中には
クラス classXとパッケージ packBがあって…

このpackBの中にclassY と classZが
あるというパターンです。

この場合のパッケージ宣言は
package packA;
(classY・classZのJavaソースファイル)
package packA.packB;

という形で 「ドット」で区切って
階層を表す事となります。

必ずしなければならないのでしょうか?
今までは、パッケージ宣言しないで
プログラムを書いてきましたが…。

Javaでは、パッケージ宣言しなかった場合には…
デフォルトパッケージ(無名パッケージ)
に属することとなります。

ただし、このデフォルトパッケージは…
練習やお試しなど
簡単なプログラミング以外では推奨されません。
ここからは、段々とJavaの世界を 広げていくために
パケージ宣言して プログラミングしていきましょう。

【2】 クラスの利用

次に、クラスを利用する場合を見ていきましょう。
同一パッケージに属するクラスは
クラス名のみで利用可能です。

今までは、パッケージ指定していませんでしたので
全て デフォルトパッケージに 属していました。
ですので、クラス名のみを指定して
インスタンス化するなどが 可能でした。
そして、別パッケージにあるクラスを
利用する場合には Javaでの記述方法が変わります。

2種類の方法があります。
❷ インポート
1つが ❶ 完全修飾名(FQN: Fully Qualified Name) を使う方法。
もう1つが ❷ インポート する方法です。

1つずつ 見ていきましょう。
❶完全修飾名(FQN: Fully Qualified Nmae)
を使う方法ですが。
これは、パッケージ名とクラス名を ドットで繋いだ
完全修飾名を使って クラスを利用する方法です。
パッケージ名.クラス名 です。
パッケージ名.クラス名
例を見てみましょう。
public class SalesEmployee {
:
:
}
companyというパッケージに、営業部員を表す
SalesEmployee というクラスがあります。
このクラスに、別パッケージのクラスから
アクセスする場合には、このように記述します。

という記述をします。
ですね。
ただし、これを頻繁に使用する場合
少し面倒に思いますね。
クラス名だけで アクセスできると良い と思います。
その場合に使う方法が、❷インポート する方法です。
package宣言 と クラス定義 の間に
インポート宣言します。

こうすることで、該当のクラスを
クラス名だけで使用できるようになります。
インポート宣言の方法は、この通りです。
import パッケージ名.*;
import と書いた後に、完全修飾名を記述します。
また、同じパッケージ内の全てのクラスを
利用したい場合には
パッケージ名 ドットの後に * を記述します。

【3】 アクセス修飾子

アクセス修飾子とは
クラスやそのメンバが、どの範囲でアクセス可能か
(アクセスレベル)を表す修飾子です。
4種類あります。
private、(指定なし)、protected、public です。
(アクセスレベル)を表す修飾子。
✅ private
✅ (指定なし)
✅ protected
✅ public
メンバとクラスに分けて見てみましょう。
クラスメンバのアクセスレベルは4種類です。
あるクラスが、パッケージAに属しています。

同じパッケージには他のクラスがあります。

また、別パッケージBには
そのクラスの「子クラス」があります。

(この子クラスについては、このコースの中で説明しますので
今のところ、そういうクラスがあると思ってください。)
そして、別パッケージで
「子クラス」ではないクラスがあります。

順に見ていきましょう。
まず、メンバに private 指定した場合です。

この場合には、同じクラスのメソッドだけアクセスできます。
他のクラスからは、アクセスできないようにしたい場合に
private をつけます。
次が、(指定なし)の場合です。

…アクセス修飾子をつけない場合ですね。
アクセスレベルとしては、package private と言いますが
同じパッケージからアクセス可能になります。
あるグループ分けした単位内だけで
アクセスしたい場合に使用します。
次が、protected を 指定した場合です。

この場合には、同一パッケージ内のクラスおよび
子クラス(サブクラス)からアクセスできます。
子クラスについては、このコースの中で解説します。
今のところは このようなものがると
認識しておいてください。
最後のが public 指定した場合です。

この場合には、どこからでもアクセスできる事となります。
public は公開されているという意味ですので
これは、分かりやすいでね。
一方のクラスのアクセスレベルですが、こちらは2種類です。
あるクラスが、パッケージAに属しています。

同じパッケージには他のクラスがあります。

また、別パッケージBに、別のクラスがあります。

順に見ていきましょう。
1つが
アクセス修飾子をつけない場合です。

アクセスレベル package private です。
同じパッケージからアクセス可能になります。
もう1つが public 指定した場合です。

この場合には、どこからでもアクセスできる事となります。
ですので、クラスの場合には、パッケージ内か
その他全体まで 広げるかの2択になります。

段階的に表現できるんですね。
しっかり、ノートしておきました。

アクセスできるかどうかを分ける事にも繋がるんですね。
理解しました。
【4】 クラス図

クラス図での表現を見ていきましょう。
クラス図では、パッケージは この図のクラスの外側にある
フォルダのような形で表します。

四角形の左上に小さい四角形です。
パッケージ名は、大きな四角形の中に記述するか
小さな四角形の中に記述します。
ここでは、大きな四角形の中に記述しています。

この例では
パッケージ driver に属するクラスが Driver で
パッケージ company に属するクラスが SalesEmployee です。
また、メンバのアクセスレベルの表現は このように
メンバ名の左側に1文字の記号で表します。

アクセス修飾子 とクラス図での表記の対応は
このようになります。
private は – マイナスマークになります。

package private は ~ 波線マーク。チルダというマークです。

protected は # 記号 ハッシュ・井桁という場合もあります。

そして
public は + で表します。

このうち、まずは private の – と
public の + を押さえておきましょう。
この例では、フィールドのほうは
private の – マイナス記号がついていて…
メソッドのほうは public の + プラス記号が
ついていますね。

このあたりの考え方については、次回お話しますので
今回は、アクセス修飾子の表現方法を押さえておきましょう。
【まとめ】

グループ分けする仕組み。
✅ ソースファイルの先頭で
所属するパッケージを宣言する。
❶ 完全修飾名を使う。
❷ インポートする。
そのメンバが、どの範囲で
アクセス可能か(アクセスレベル)
を表す修飾子。以下の4種類。
・private
・(指定なし)
・protected
・public
クラスの外側にフォルダーの
ような形で記載する。
✅ アクセスレベルは
各メンバの左に記号を記載。
- private
~ (指定なし)
# protected
+ public
今回も、ご覧いただき、ありがとうございます。