前のブログで、あなたはについて学びました Javaで。このブログでは、もう1つの重要な柱を理解します。 つまり、主な機能が内部実装の詳細を非表示にすることであるJava抽象化。
この記事では、以下のトピックについて説明します。
あなたはまた、この録音を通過するかもしれません ここでは、例を使用してトピックを詳細に理解できます。
Oracleからhdfsへのsqoopインポート
OOPでの抽象化
私たちが一般的に抽象化について話すとき、ソフトウェア言語は抽象化の一例です。例を挙げて、次のようにステートメントを記述しましょう-
x = y + z
上記のステートメントでは、2つの異なる場所に格納されている2つの変数を追加し、その結果を新しい場所に格納しています。では、次に何が起こるのでしょうか?ご存知かもしれませんが、レジスタ、命令セット、プログラムカウンタ、ストレージユニットなどが関係しています。 Javaでの抽象化について言及するときは、 そしてそれがどのように達成されるか。 OOPの抽象化の概念は、クラスが考案された瞬間から始まります。抽象化は、ソフトウェアとOOPのあらゆる場所に適用されます。
Java抽象化とは何ですか?
抽象化は、イベントではなくアイデアを扱う品質に他なりません。基本的には、内部の詳細を非表示にし、ユーザーに重要なことを示すことを扱います。
上記のgifを見ると、電話がかかってきたことがわかります。電話を受けるか、拒否するかを選択できます。しかし実際には、バックグラウンドで実行されるコードはたくさんあります。したがって、ここでは、呼び出しがどのように生成されるかについての内部処理がわかりません。それが抽象化の美しさです。抽象化は次の2つの方法で実現できます。
a)抽象クラス
b)インターフェース
これらの概念をさらに詳しく理解しましょう。
深いコピーと浅いコピーのJava
抽象クラス
抽象クラスには「abstract」キーワードが含まれています。しかし、それは正確にはどういう意味ですか?クラスを抽象化すると、インスタンス化できません。つまり、抽象クラスのオブジェクトを作成できません。また、抽象クラスには、具象メソッドだけでなく抽象メソッドも含めることができます。
注意: 抽象クラスを使用して、0〜100%の抽象化を実現できます。
抽象クラスを使用するには、基本クラスから継承する必要があります。ここでは、抽象メソッドの実装を提供する必要があります。そうしないと、抽象クラスになります。
抽象クラスの構文を見てみましょう。
抽象クラスSports {//抽象クラスsports抽象voidjump()//抽象メソッド}
インターフェース
Javaのインターフェースは、抽象メソッドと静的定数のコレクションです。インターフェイスでご存知かもしれませんが、各メソッドはパブリックで抽象的ですが、コンストラクターは含まれていません。抽象化に加えて、インターフェースはJavaで多重継承を実現するのにも役立ちます。
注意: インターフェイスを使用して100%の抽象化を実現できます。
基本的に、インターフェイスは空のボディを持つ関連メソッドのグループです。 Shapeのインターフェースとそれに関連するメソッドの例を見て、インターフェースを理解しましょう。
パブリックインターフェイスの形状{publicvoid draw()public double getArea()}
これらの方法は、あらゆる「形」で存在する必要がありますよね?しかし、彼らの働きは異なるでしょう。
円、正方形、長方形などの形状を描画するとします。各形状には、半径、高さ、幅などの独自の寸法があります。円を描き、その面積を計算したいとします。同じことを考慮して、上記のコードで2つのメソッド、つまりdraw()とgetArea()を作成しました。さて、これらの方法を使用して、インターフェイスを実装することにより、任意の形状を描画し、面積を計算できます。
それでは、このインターフェースを実装する方法について機能を調べてみましょう。
このインターフェースを実装するために、クラスの名前を任意のShape、たとえば「Circle」に変更します。したがって、クラスインターフェイスを実装するために、「implement」キーワードを使用します。
インフォマティカにおける能動的および受動的変換
public classCircleはShape {private double radius public Circle(double r){this.radius = r} void draw(){System.out.println( 'Drawing Circle')} public double getArea(){return Math.PI *を実装しますthis.radius * this.radius} public double getRadius(){return this.radius}} public class Test {public static void main(String args []){Shape c = new Circle(8)c.draw()System。 out.println( 'Area =' + c.getArea())}}
上記の例では、さまざまな方法に機能を指定し、円の面積を計算しました。ここで、インターフェースを実装すると、クラスが提供する動作についてより正式になることができます。別のクラス、たとえば「Rectangle」クラスを作成することもできます。このクラスは、異なる機能を持つ同じインターフェイス「shape」を継承できます。
Javaでの抽象化のリアルタイム例
インターフェースとしてSportがあるとします。ここでは、実装は「バドミントン」と「サッカー」と呼ばれるクラスによって提供されます。実際のシナリオでは、エンドユーザーは実装クラスを認識しません。したがって、実装クラスのオブジェクトは、ファクトリメソッドによって提供できます。ファクトリメソッドを使用して、いくつかの基準に基づいて実装クラスのオブジェクトを作成できます。
同じことを実装して、Sport.javaというインターフェースを作成しましょう。
public Interface Sport {void play()} //ここで、「バドミントン」という名前のクラスを作成します。パブリッククラスバドミントンはSportを実装します{@Override public void play(){System.out.println( 'Playing badminton')}} //次に、最後のクラス「フットボール」を作成しましょう。パブリッククラスフットボールはスポーツを実装します{@Override public void play(){System.out.println( 'Playing Football')}
最後のステップは、「SportInterface」という名前のメインクラスを作成することです。
public SportInterface {public static void main(String args []){//ここにコード}}
上記のプログラムを実行すると、出力は次のようになります。
バドミントンをする-------------------フットボールをする
皆さんがインターフェースと、それを使用して抽象化を実現する方法を明確に理解していることを願っています。それでは、抽象化とカプセル化を比較して、この記事を締めくくりましょう。
抽象化とカプセル化
抽象化 | カプセル化 |
設計レベルで問題を解決します | 実装レベルで問題を解決します |
不要なデータを非表示にし、関連する結果を提供するために使用されます | カプセル化とは、コードとデータを1つのユニットに隠して、データを外界から保護することを意味します。 |
外側のレイアウト–デザインの観点から使用 | 内部レイアウト–実装の観点から使用 |
抽象化とカプセル化の違いをご理解いただければ幸いです。これで、JavaAbstractionブログで終わりです。うまくいけば、あなたはそれが有益であり、あなたの知識に付加価値を与えるのに役立ったと思います。 Javaについて詳しく知りたい場合は、
「Java抽象化とは」を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。
質問がありますか?この「JavaAbstraction」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。