Javaでのカプセル化–カプセル化を使用してOOPをマスターする方法は?



Javaでのカプセル化に関するこの記事は、さまざまな簡単な例とともに、実装の詳細を非表示にするコア概念を理解するのに役立ちます。

オブジェクト指向プログラミングまたはOOPとしてよく知られているものは、その能力と使いやすさを活用したJavaの主要な柱の1つです。プロのJava開発者になるには、さまざまなものを完璧に制御する必要があります お気に入り 、 抽象化 、カプセル化、およびポリモーフィズム。この記事の媒体を通して、OOPの最も重要な概念の1つ、つまりJavaでのカプセル化とそれがどのように達成されるかについての完全な洞察を提供します。

以下はトピックです。この記事で説明します。





Javaコマンドライン引数の例

あなたはまた、この録音を通過するかもしれません ここでは、例を使用してトピックを詳細に理解できます。



カプセル化の概要

カプセル化とは、データを1つのユニットにまとめることを指します。これは、コードとそれが操作するデータをバインドするメカニズムです。カプセル化について考えるもう1つの方法は、このシールドの外側のコードがデータにアクセスするのを防ぐ保護シールドです。この中で、の変数またはデータ は他のクラスから隠されており、宣言されている独自のクラスのメンバー関数を介してのみアクセスできます。

それでは、薬がカプセル内で常に安全である医療用カプセルの例を見てみましょう。同様に、カプセル化により、クラスのメソッドと変数は十分に隠され、安全になります。



カプセル化-Javaでのカプセル化-EdurekaJavaでのカプセル化は、次の方法で実現できます。

  • クラスの変数をプライベートとして宣言します。
  • 変数値を変更および表示するためのパブリックsetterおよびgetterメソッドを提供します。

それでは、カプセル化をよりよく理解するためにコードを見てみましょう。

public class Student {private String name public String getName(){return name} public void setName(String name){this.name = name}} class Test {public static void main(String [] args){Student s = new Student ()s.setName( 'Harry Potter')System.out.println(s.getName())}}

上記のコードでわかるように、私はプライベートを持つクラスStudentを作成しました 名前 次に、生徒の名前を取得して設定するためのゲッターとセッターを作成しました。これらのメソッドの助けを借りて、name変数にアクセスしたいクラスは、これらのgetterメソッドとsetterメソッドを使用してアクセスする必要があります。

次に、もう1つの例を見て、カプセル化について詳しく理解しましょう。この例では、CarクラスにはnameとtopSpeedの2つのフィールドがあります。ここでは、両方ともプライベートとして宣言されています。つまり、クラスの外部から直接アクセスすることはできません。 getName、setName、setTopSpeedなどのいくつかのgetterメソッドとsetterメソッドがあり、それらはパブリックとして宣言されています。これらのメソッドは「外部者」に公開されており、Carオブジェクトからデータを変更および取得するために使用できます。車両の最高速度を設定する1つの方法と、MPHまたはKMHtのいずれかで最大速度値を取得する2つのゲッター方法があります。つまり、基本的に、これはカプセル化が行うことです。実装を非表示にし、必要な値を提供します。それでは、以下のコードを見てみましょう。

パッケージEdurekapublic class Car {private String name private double topSpeed public Car(){} public String getName(){return name} public void setName(String name){this.name = name} public void setTopSpeed(double speedMPH){topSpeed = speedMPH} public double getTopSpeedMPH(){return topSpeed} public double getTopSpeedKMH(){return topSpeed * 1.609344}}

ここで、メインプログラムは、指定された名前でCarオブジェクトを作成し、setterメソッドを使用してこのインスタンスの最高速度を格納します。これにより、Carクラスで速度がどのように変換されるかを気にすることなく、MPHまたはKMHで速度を簡単に取得できます。

パッケージEdurekapublic class Example {public static void main(String args [])Car car = new Car()car.setName( 'Mustang GT 4.8-litre V8')car.setTopSpeed(201)System.out.println(car。 getName()+ 'MPHの最高速度は' + car.getTopSpeedMPH())System.out.println(car.getName()+ 'KMHの最高速度は' + car.getTopSpeedKMH())

So、これがJavaでカプセル化を実現する方法です。それでは、さらに進んで、なぜカプセル化が必要なのかを見てみましょう。

Javaでカプセル化が必要なのはなぜですか?

Javaでは、次の理由からカプセル化が不可欠です。

  • データのアクセシビリティの方法を制御します
  • 必要条件に基づいてコードを変更します
  • ゆるいカップルを達成するのに役立ちます
  • アプリケーションのシンプルさを実現
  • また、プログラムに存在する他の機能やコードを中断することなく、コードの一部を変更することもできます。

それでは、カプセル化の必要性を示す小さな例を考えてみましょう。

SQLの関数は何ですか
class Student {int id String name} public class Demo {public static void main(String [] args){Student s = new Student()s.id = 0 s.name = '' s.name = null}}

上記の例では、アクセス修飾子として2つのインスタンス変数が含まれています。したがって、同じパッケージ内のどのクラスでも、そのクラスのオブジェクトを作成することにより、これらの変数の値を割り当てたり変更したりできます。したがって、Studentクラスに変数として格納されている値を制御することはできません。この問題を解決するために、Studentクラスをカプセル化します。

したがって、これらはカプセル化の必要性を表すいくつかの指針でした。それでは、カプセル化のいくつかの利点を見てみましょう。

カプセル化の利点

    • データ隠蔽: ここでは、ユーザーはクラスの内部実装について何も知りません。ユーザーでさえ、クラスが変数に値を格納する方法に気付かないでしょう。彼/彼女は、私たちが値をsetterメソッドに渡し、変数がその値で初期化されていることに気付くだけです。
    • 柔軟性の向上: ここでは、要件に応じて、クラスの変数を読み取り専用または書き込み専用にすることができます。変数を読み取り専用にしたい場合は、setName()のようなsetterメソッドを省略する必要があります。setAge()など、または変数を書き込み専用にしたい場合は、上記のプログラムからgetName()、getAge()などのgetメソッドを省略する必要があります。
    • 再利用性: また、再利用性が向上し、新しい要件に合わせて簡単に変更できます。

カプセル化の基本を理解したので、この記事の最後のトピックに飛び込み、リアルタイムの例を使用してカプセル化について詳しく理解しましょう。

カプセル化のリアルタイムの例

テレビの例を考えて、内部実装の詳細が外部クラスからどのように隠されているかを理解しましょう。基本的に、この例では、内部コードデータ、つまり回路を外部からカバーで隠しています。今 、これはアクセス修飾子の助けを借りて達成することができます。アクセス修飾子は、クラスのアクセスまたはレベル、コンストラクター変数などを設定します。以下のコードでわかるように、私はプライベートアクセス修飾子を使用してクラスのアクセスレベルを制限しました。 privateとして宣言された変数は、Televisionクラス内でのみアクセスできます。

public class Television {private double width private double height private double Screensize private int maxVolume print int volume private boolean power public Television(double width、double height、double screenSize){this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel){switch(channel){case1:return 34.56 case2:return 54.89 case3:return 73.89 case1:return 94.98} return 0} public int reduceVolume(){if(0volume)volume ++ returnvolume}}クラステスト{publicstatic void main(String args []){Television t = new Television(11.5,7,9)t.powerSwitch()t.channelTuning(2)t.decreaseVolume()t.increaseVolume()テレビ。 //変数はプライベートであり、クラスの外部からアクセスできないため、エラーをスローします}}

上記の例では、すべての変数をprivateとして宣言し、メソッド、コンストラクター、およびクラスをpublicとして宣言しています。ここでは、コンストラクター、メソッドはクラスの外部からアクセスできます。私が作成するときオブジェクトTelevisionクラスの場合、クラスに存在するメソッドとコンストラクターにアクセスできますが、プライベートアクセス修飾子で宣言された変数は非表示になります。そのため、アクセスしようとすると 幅変数 上記の例では、エラー。これが、内部実装の詳細が他のクラスから隠されている方法です。これが、Javaでカプセル化を実現する方法です。

これで、「Javaでのカプセル化」に関するこの記事は終わりです。うまくいけば、あなたはそれが有益であり、あなたの知識に付加価値を与えるのに役立ったと思います。 Javaについて詳しく知りたい場合は、

Python用のAtomをセットアップする方法

「Javaでのカプセル化とは」を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。

質問がありますか?この「Javaでのカプセル化」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。