020-オブジェクト指向の基本-カプセル化【新人エンジニアが最初に覚えたい100のJava文法】

ユーチューブ動画

カプセル化について解説します。

ソースコード

public class BasicClass {
	public static void main(String[] args) {
		Product product1 = new Product();
		product1.setProductName("pencil");
		product1.setPrice(100);
		Product product2 = new Product();
		product2.setProductName("eraser");
		product2.setPrice(60);
	}
}
class Product {
	private String productName;
	private int price;
	public String getProductName() {
		return productName;
	}
	public void setProductName(String productName) {
		this.productName = productName;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
}

解説

カプセル化について解説します。

オブジェクト指向の性質の一つにカプセル化があります。

カプセル化は、小さな部品を作るために、余計なものを見せないようにするといった考え方です。

一般的には、メンバ変数にアクセスできないようにメンバ変数を隠蔽して、代わりにメソッド経由でアクセスできるようにした形になります。

カプセル化することで、簡単にデータを書き換えられないようにすることができます。

例えば、データをチェックしてから書き換えるなどといったことも可能になります。

サンプルコードでは、2つのクラスが登場します。

mainメソッドを持っているクラスとそうではないクラスです。

mainメソッドがついているクラスが実行できます。

Productクラスはmainメソッドがないので直接実行できないこともチェックしましょう。

まずは、Productクラスから確認しましょう。

メンバ変数にprivateという修飾子がついています。

また、メソッドにはpublicという修飾子がついています。

これにより、メンバ変数に他のクラスから直接アクセスできない、メソッドには他のクラスからアクセスできるということが実現できます。

次にmainメソッドがついているBasicClassを確認しましょう。

mainメソッドでは2つのインスタンスが作成されています。

メンバ変数には直接アクセスすることができないので、メソッドを呼び出しています。

なお、メソッドを呼び出すためには、インスタンスの参照変数名.メソッド名で呼び出します。

数多くのメンバ変数やメソッドが存在して、どちらからもアクセスできてしまうという状態になると混乱することでしょう。

カプセル化は、アクセスする範囲をきちんと定めて、部品として使いやすくしているわけです。

以上、カプセル化について解説しました。

このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。