-
Javaのポリモーフィズム
ポリモーフィズムは、オブジェクトがさまざまな形をとる能力です。 OOPでのポリモーフィズムの最も一般的な使用法は、親クラス参照を使用して子クラスオブジェクトを参照する場合に発生します。 複数のIS-Aテストに合格できるJavaオブジェクトは、多形であると見なされます。 Javaでは、すべてのJavaオブジェクトはポリモーフィックです。これは、どのオブジェクトも、独自のタイプとクラスObjectのIS-Aテストに合格するためです。 オブジェクトにアクセスする唯一の可能な方法は、参照変数を使用することであるということを知っておくことが重要です。参照変数は1つのタイプのみにすることができます。宣
-
Javaでfinalメソッドを継承できますか?
はい、finalメソッドは継承されますが、オーバーライドすることはできません。
-
Javaでのランタイムポリモーフィズム
メソッドのオーバーライドは、実行時のポリモーフィズムの例です。メソッドのオーバーライドでは、サブクラスはそのスーパークラスと同じシグネチャを持つメソッドをオーバーライドします。コンパイル時に、参照タイプがチェックされます。ただし、ランタイムでは、JVMはオブジェクトタイプを把握し、その特定のオブジェクトに属するメソッドを実行します。 例 概念を理解するには、以下の例を参照してください- class Animal { public void move() { System.out.println("Animals ca
-
マルチレベル継承を使用したJavaランタイムポリモーフィズム
メソッドのオーバーライドは、ランタイムポリモーフィズムの例です。メソッドのオーバーライドでは、サブクラスはそのスーパークラスと同じシグネチャを持つメソッドをオーバーライドします。コンパイル時に、参照タイプがチェックされます。ただし、ランタイムでは、JVMはオブジェクトタイプを把握し、その特定のオブジェクトに属するメソッドを実行します。 マルチレベル継承の任意のレベルでメソッドをオーバーライドできます。概念を理解するには、以下の例を参照してください- 例 class Animal { public void move() { S
-
Javaでの静的バインディングと動的バインディング
はい!コンパイラは、メソッドの実行に使用するオブジェクトを知っている場合、参照をオブジェクトに静的にバインドできます。たとえば、静的変数、プライベート変数、final変数は静的バインディングを使用しています。一方、オブジェクトの識別が実行時に行われる場合は、動的バインディングが使用されます。メソッドのオーバーライドは動的バインディングの場合です。 一方、メソッドのオーバーロードは静的バインディングの場合です。
-
Javaでのダウンキャスト
はい、キャストすることで変数をより低い範囲の代替にダウンキャストできます。ただし、データの損失につながる可能性があります。以下の例を参照してください- 例 public class Tester { public static void main(String[] args) { int a = 300; byte b = (byte)a; System.out.println(b); } } 出力 出力を次のように出
-
Javaのinstanceof演算子
この演算子は、オブジェクト参照変数にのみ使用されます。オペレータは、オブジェクトが特定のタイプ(クラスタイプまたはインターフェイスタイプ)であるかどうかを確認します。 instanceof演算子は-と記述されます ( Object reference variable ) instanceof (class/interface type) 演算子の左側の変数によって参照されるオブジェクトが、右側のクラス/インターフェイスタイプのIS-Aチェックに合格した場合、結果はtrueになります。以下は例です- 例 public class Test { public st
-
Javaの抽象クラス
宣言にabstractキーワードを含むクラスは、abstractクラスと呼ばれます。 抽象クラスには、抽象メソッド、つまり本体のないメソッドが含まれる場合と含まれない場合があります(public void get();) ただし、クラスに少なくとも1つの抽象メソッドがある場合、そのクラスは抽象として宣言する必要があります。 クラスが抽象として宣言されている場合、インスタンス化することはできません。 抽象クラスを使用するには、それを別のクラスから継承し、そのクラスに抽象メソッドの実装を提供する必要があります。 抽象クラスを継承する場合は、その中のすべての抽象メソッドに実装を提供する必要がありま
-
Javaでの抽象化とカプセル化
カプセル化 カプセル化は、4つの基本的なOOP概念の1つです。他の3つは、継承、ポリモーフィズム、および抽象化です。 Javaでのカプセル化は、データ(変数)とデータ(メソッド)に作用するコードを1つのユニットとしてまとめるためのメカニズムです。カプセル化では、クラスの変数は他のクラスから隠され、現在のクラスのメソッドを介してのみアクセスできます。したがって、データの非表示とも呼ばれます。 Javaでカプセル化を実現するには- クラスの変数をプライベートとして宣言します。 変数値を変更および表示するためのパブリックセッターメソッドとゲッターメソッドを提供します。 抽象化 抽象化とは、イ
-
Javaでの抽象化
辞書によると、抽象化 イベントではなくアイデアを扱う品質です。たとえば、電子メールの場合、電子メールを送信するとすぐに何が起こるかなどの複雑な詳細を考えると、電子メールサーバーが使用するプロトコルはユーザーに表示されません。したがって、電子メールを送信するには、コンテンツを入力し、受信者のアドレスを指定して、[送信]をクリックするだけです。 抽象化は、実装の詳細をユーザーから隠すプロセスであり、機能のみがユーザーに提供されます。つまり、ユーザーは、オブジェクトの実行方法ではなく、オブジェクトの実行内容に関する情報を入手できます。 Javaでは、抽象化は抽象クラスとインターフェースを使用して
-
Javaの抽象メソッドとクラス
はい。 Javaで抽象メソッド/クラスを非常に簡単に作成できます。 例 抽象クラスを作成するには、クラス宣言で、classキーワードの前にabstractキーワードを使用するだけです。 /* File name : Employee.java */ public abstract class Employee { private String name; private String address; private int number; public Employee(String name, String address, int
-
Javaのインターフェース
インターフェースはJavaの参照型です。クラスに似ています。これは、抽象的なメソッドのコレクションです。クラスはインターフェースを実装し、それによってインターフェースの抽象メソッドを継承します。 インターフェイスには、抽象メソッドに加えて、定数、デフォルトメソッド、静的メソッド、およびネストされた型も含まれる場合があります。メソッド本体は、デフォルトのメソッドと静的メソッドにのみ存在します。 インターフェイスの作成は、クラスの作成に似ています。ただし、クラスはオブジェクトの属性と動作を記述します。また、インターフェースには、クラスが実装する動作が含まれています。 インターフェイスを実装す
-
Java8でのインターフェースの機能強化
Java 8では、インターフェースにデフォルトのメソッド実装の新しい概念が導入されています。この機能は下位互換性のために追加されているため、古いインターフェースを使用してJava8のラムダ式機能を活用できます。 たとえば、「List」または「Collection」インターフェースには「forEach」メソッド宣言がありません。したがって、このようなメソッドを追加すると、コレクションフレームワークの実装が壊れてしまいます。 Java 8ではデフォルトのメソッドが導入されているため、List / CollectionインターフェースはforEachメソッドのデフォルトの実装を持つことができ、これ
-
抽象クラスとインターフェースの違い
抽象クラスは、デフォルトの動作を実装するインスタンスメソッドを持つことができます。インターフェイスは定数とインスタンスメソッドのみを宣言できますが、デフォルトの動作を実装することはできず、すべてのメソッドは暗黙的に抽象化されています。インターフェースにはすべてのパブリックメンバーがあり、実装はありません。
-
インターフェイスのJava8デフォルトメソッド
Java 8では、インターフェースにデフォルトのメソッド実装の新しい概念が導入されています。この機能は下位互換性のために追加されているため、古いインターフェースを使用してJava8のラムダ式機能を活用できます。 たとえば、「List」または「Collection」インターフェースには「forEach」メソッド宣言がありません。したがって、このようなメソッドを追加すると、コレクションフレームワークの実装が壊れてしまいます。 Java 8ではデフォルトのメソッドが導入されているため、List / CollectionインターフェースはforEachメソッドのデフォルトの実装を持つことができ、これ
-
インターフェイスのJava8静的メソッド
インターフェースにはJava8以降の静的ヘルパーメソッドを含めることもできます。 public interface vehicle { default void print() { System.out.println("I am a vehicle!"); } static void blowHorn() { System.out.println("Blowing horn!!!"); &nb
-
Javaのマーカーまたはタグ付きインターフェースとは
拡張インターフェースの最も一般的な使用法は、親インターフェースにメソッドが含まれていない場合に発生します。たとえば、java.awt.eventパッケージのMouseListenerインターフェースは、-として定義されているjava.util.EventListenerを拡張しました。 例 package java.util; public interface EventListener {} メソッドが含まれていないインターフェースは、タグ付けインターフェースと呼ばれます。インターフェースにタグを付けるには、2つの基本的な設計目的があります- 共通の親を作成します Java APIの他の数
-
Javaのネストされたインターフェース
別のインターフェースまたはクラスでインターフェースを宣言できます。このようなインターフェースは、ネストされたインターフェースと呼ばれます。 ネストされたインターフェースを管理するルールは次のとおりです。 インターフェース内で宣言されたネストされたインターフェースはパブリックである必要があります。 クラス内で宣言されたネストされたインターフェースには、任意のアクセス修飾子を含めることができます。 ネストされたインターフェースはデフォルトで静的です。 以下はネストされたインターフェースの例です。 例 class Animal { interface Activit
-
Javaのパッケージの種類
パッケージは、名前の競合を防ぎ、アクセスを制御し、クラス、インターフェイス、列挙、アノテーションの検索/検索と使用を容易にするためなどにJavaで使用されます。 パッケージは、アクセス保護と名前空間管理を提供する関連タイプ(クラス、インターフェイス、列挙、および注釈)のグループとして定義できます。 Javaの既存のパッケージのいくつかは- java.lang −基本クラスをバンドルします java.io-入出力関数のクラスは、このパッケージにバンドルされています プログラマーは独自のパッケージを定義して、クラス/インターフェースなどのグループをバンドルできます。プログラマーがクラス、イ
-
Javaでのパッケージの作成と使用
パッケージを作成するときは、パッケージの名前を選択し、クラス、インターフェイス、列挙、およびを含むすべてのソースファイルの先頭にその名前とともにパッケージステートメントを含める必要があります。パッケージに含めるアノテーションタイプ。 パッケージステートメントは、ソースファイルの最初の行である必要があります。各ソースファイルに含めることができるパッケージステートメントは1つだけであり、ファイル内のすべてのタイプに適用されます。 パッケージステートメントが使用されていない場合、クラス、インターフェイス、列挙、およびアノテーションタイプは現在のデフォルトパッケージに配置されます。 パッケージステ