オブジェクト指向プログラミングでは、抽象化は、不必要な詳細 (実装) をユーザーから隠し、重要な詳細 (機能) に焦点を当てることとして定義されます。これにより効率が向上し、複雑さが軽減されます。
Java では、次を使用して抽象化を実現できます。 抽象クラス と方法。このチュートリアルでは、Java での抽象メソッドとその使用法について学びます。
抽象クラス
クラスは、次のメソッドを使用して抽象宣言されます。 抽象的な キーワード。 0 個以上の抽象メソッドと非抽象メソッドを含めることができます。抽象クラスを拡張し、そのメソッドを実装する必要があります。インスタンス化することはできません。
抽象クラスの構文:
abstract class class_name { //abstract or non-abstract methods }
注: 抽象クラスには、抽象メソッドが含まれる場合と含まれない場合があります。
抽象メソッド
を使用して宣言されたメソッド 抽象的な 抽象クラス内に定義(実装)を持たないキーワードを抽象メソッドと呼びます。
スーパークラスでメソッド宣言だけが必要な場合は、メソッドを抽象として宣言することで実現できます。
抽象メソッドは、スーパークラスに実装がないため、サブクラス責任とも呼ばれます。したがって、サブクラスはメソッド定義を提供するためにこれをオーバーライドする必要があります。
抽象メソッドの構文:
abstract return_type method_name( [ argument-list ] );
ここで、抽象メソッドにはメソッド本体がありません。 0 個以上の引数を持つことができます。
留意事項
Java の抽象メソッドの重要なルールは次のとおりです。
- 抽象メソッドには本体 (実装) がなく、メソッド シグネチャ (宣言) があるだけです。抽象クラスを拡張したクラスは、抽象メソッドを実装します。
- 非抽象 (具体) クラスが抽象クラスを拡張する場合、そのクラスはその抽象クラスのすべての抽象メソッドを実装する必要があります。そうでない場合は、具象クラスも抽象クラスとして宣言する必要があります。
- 抽象メソッドには署名があるだけなので、末尾にセミコロン (;) を付ける必要があります。
- 以下、色々と 不正な組み合わせ に関するメソッドの他の修飾子の 抽象的な 修飾子:
- 最後の
- 抽象的なネイティブ
- 抽象的な同期
- 抽象的な静的
- 抽象的なプライベート
- 抽象的な strictfp
- クラスに抽象メソッドが含まれる場合、それは抽象である必要がありますが、その逆は当てはまりません。
Javaの抽象メソッドの例
例 1:
次の例では、抽象クラスと抽象メソッドを使用して抽象化がどのように実現されるかを学びます。
AbstractMethodEx1.java
// abstract class abstract class Multiply { // abstract methods // sub class must implement these methods public abstract int MultiplyTwo (int n1, int n2); public abstract int MultiplyThree (int n1, int n2, int n3); // regular method with body public void show() { System.out.println ('Method of abstract class Multiply'); } } // Regular class extends abstract class class AbstractMethodEx1 extends Multiply { // if the abstract methods are not implemented, compiler will give an error public int MultiplyTwo (int num1, int num2) { return num1 * num2; } public int MultiplyThree (int num1, int num2, int num3) { return num1 * num2 * num3; } // main method public static void main (String args[]) { Multiply obj = new AbstractMethodEx1(); System.out.println ('Multiplication of 2 numbers: ' + obj.MultiplyTwo (10, 50)); System.out.println ('Multiplication of 3 numbers: ' + obj.MultiplyThree (5, 8, 10)); obj.show(); } }
出力:
Javaでの型変換とキャスト
例 2:
デフォルトでは、インターフェイスのすべてのメソッドはパブリックかつ抽象です。インターフェイスには具体的なメソッド、つまり本体を持つ通常のメソッドを含めることはできません。
AbstractMethodEx2.java
// interface interface SquareCube { // abstract methods public abstract int squareNum (int n); // it not necessary to add public and abstract keywords // as the methods in interface are public abstract by default int cubeNum (int n); // regular methods are not allowed in an interface // if we uncomment this method, compiler will give an error /*public void disp() { System.out.println ('I will give error if u uncomment me'); } */ } public class AbstractMethodEx2 implements SquareCube { // defining the abstract methods of interface public int squareNum (int num) { return num * num; } public int cubeNum (int num) { return num * num * num; } // main method public static void main(String args[]){ SquareCube obj = new AbstractMethodEx2(); System.out.println('Square of number is: ' + obj.squareNum (7) ); System.out.println('Cube of number is: ' + obj.cubeNum (7)); } }
出力:
このようにして、Java での抽象メソッドとその実装について学びました。