42

重複の可能性:
Java の抽象クラス

いくつかの説明を受けましたが、これまでのところ、Java の抽象クラスとメソッドが何であるかを理解できません。

プログラムのセキュリティに何らかの影響を与える必要があると言う人もいれば、そのようなことではないという人もいます。

Dietel & Dietel の本からでも、その目的がわかりません。いつ、どこで、なぜ使うのか?

初心者に教えているように親切に説明してください。助けていただければ幸いです。

4

8 に答える 8

78

- インスタンス化できないものAbstract classつまり作成できないものです。 object

- Abstract method定義のないメソッドの宣言です。

- Aは非抽象メソッドのみを持つNon-abstract classことができます。

- Anは、非抽象メソッドと抽象メソッドの両方を持つAbstract classことができます。

-Classがある場合Abstract method 、クラスも抽象である必要があります。

- AnAbstract method は、最初の非抽象サブクラスで実装する必要があります。

- Abstract class inは、変化し続ける動作Design patternsをカプセル化するために使用されます。

于 2012-12-11T16:38:06.263 に答える
76

抽象クラスは、インスタンス化できないクラスです。唯一の目的は、他のクラスを拡張することです。

抽象メソッドは抽象クラスのメソッドです(抽象として宣言する必要があります)。つまり、拡張具象クラスには本体がないため、それらをオーバーライドする必要があります。

抽象クラスの主な目的は、サブクラスで使用する共通のコードがあるが、抽象クラスがそれ自体のインスタンスを持つべきではない場合です。

あなたはここでそれについてもっと読むことができます:抽象的なメソッドとクラス

于 2012-12-11T16:24:39.367 に答える
16

抽象メソッドは、本体のないメソッド シグネチャ宣言です。例えば:

public abstract class Shape {
    . . .

    public abstract double getArea();
    public abstract double getPerimeter();
}

メソッドgetArea()とメソッドgetPerimeter()は抽象的です。Shapeクラスには抽象メソッドがあるため、それも宣言する必要abstractがあります。abstractクラスは、抽象メソッドなしで宣言することもできます。クラスが抽象の場合、そのインスタンスは作成できません。(具体的な) サブクラスのインスタンスのみを作成できます。具象クラスは、abstract と宣言されていないクラスです (したがって、abstract メソッドを持たず、継承されたすべての抽象メソッドを実装します)。例えば:

public class Circle extends Shape {
    public double radius;
    . . .

    public double getArea() {
        return Math.PI * radius * radius;
    }

    public double getPerimeter() {
        return 2.0 * Math.PI * radius;
    }
}

これには多くの理由があります。Shape1 つは、すべての形状に対して同じであるが、レベルでは不明な形状固有の動作に依存するメソッドを作成することです。たとえば、メソッドを次のように書くことができます。

public abstract class Shape {
    . . .

    public void printArea(PrintStream out) {
        out.println("The area is " + getArea());
    }
}

確かに、これは不自然な例ですが、基本的な考え方を示しています: 具体的な動作を未指定の動作に関して定義します。

抽象クラスを使用するもう 1 つの理由は、インターフェイスを部分的に実装できるようにするためです。インターフェイスで宣言されたすべてのメソッドは、インターフェイスを実装するクラスによって抽象メソッドとして継承されます。クラスでインターフェースの部分的な実装を提供し、詳細はサブクラスに任せたい場合があります。部分的な実装は、abstract として宣言する必要があります。

于 2012-12-11T16:28:42.677 に答える
3

抽象メソッドには本体がありません。明確に定義されたメソッドは抽象として宣言できません。

抽象メソッドを持つクラスは、抽象として宣言する必要があります。

抽象クラスはインスタンス化できません。

于 2012-12-11T16:33:34.993 に答える
1

抽象クラスは、オブジェクトを作成できないクラスであるため、主に継承に使用されます (静的メソッドを含めることができるかどうかはわかりません)。

抽象メソッドは、子クラスがオーバーライドする必要があるメソッドであり、本体を持たず、abstract とマークされ、abstract クラスのみがそれらのメソッドを持つことができます。

于 2012-12-11T16:26:56.190 に答える
0

抽象クラスを使用すると、他のクラスを拡張するためのある種のスケルトンを持つことができます。

それらをインスタンス化することはできませんが、それらを拡張するクラスで使用できる共通の実装を配置できます。

于 2012-12-11T16:27:42.380 に答える
0

Javaでabstractが何を意味するのかを理解したら、なぜこれを. Java は抽象的なものなしで動作するかもしれませんが、特定の OO スタイルまたは語彙の一部になります。抽象クラスまたはメソッドがプログラム作成者の意図を表現するエレガントな方法である状況が実際に存在します。ほとんどの場合、他の人が使用するフレームワークまたはライブラリをプログラミングしている場合。

于 2012-12-11T16:29:26.593 に答える
-2

抽象クラスと抽象メソッド 完全な説明

抽象メソッドには本体がありません。明確に定義されたメソッドを抽象として宣言することはできません。

抽象メソッドを持つクラスは抽象として宣言する必要があります。

抽象クラスをインスタンス化できません。

于 2012-12-11T16:25:29.653 に答える