プロが教えるわが家の防犯対策術!

javaのabstractの意味

abstract class Factory
{
abstract ClassA createClassA();
}



createClassA()メソッドは定義していません。

abstract ClassA createClassA();の意味はなんですか?

A 回答 (3件)

抽象クラスFactoryには引数なしでClassAを返すcreateClassAメソッドが


あるってことですね。

抽象クラスFactoryを継承するクラスには『引数なしでClassAを返すcreateClassAメソッド』を実装する必要があります。

・・・むつかしい・・・

この回答への補足

abstract ClassA createClassA();で、
createClassA()メソッドが実装されるのかと思いました。

補足日時:2009/03/06 15:32
    • good
    • 0
この回答へのお礼

ありがとうございます。

当方はJavaを勉強しています。
abstractなどjavaの基本文法は読破しております。
現在は、例外処理の仕方を勉強しています。

平行して、デザインパターンも勉強していました。
アブストラクトファクトリーパターンという23個中の2個目でつまずきました。
が、よくよく読むと、createClassA()メソッドが存在することがわかりました。

class Factory extend MyFactory
{
ClassA createClassA() { return new MyClass(); }
}

ご迷惑をお掛けしました。m__m

お礼日時:2009/03/06 15:31

abstractクラスは誰かに継承してもらって始めて意味がでてきます


継承したほうのクラスは、abstractなクラスにかいてあるabstractなメソッドを実装しなければなりません
実装というのは

ClassA createClassA(){
// いろいろ処理
return ClassAのインスタンス;
}

というふうに、中括弧の中身を書くことです

この回答への補足

ClassAオブジェクトに、
createClassA()などの生成系を集めていたようです。

プログラムを追うのに失敗していました。

補足日時:2009/03/06 15:39
    • good
    • 0
この回答へのお礼

ありがとうございます。

当方はJavaを勉強しています。
abstractなどjavaの基本文法は読破しております。
現在は、例外処理の仕方を勉強しています。

平行して、デザインパターンも勉強していました。
アブストラクトファクトリーパターンという23個中の2個目でつまずきました。
が、よくよく読むと、createClassA()メソッドが存在することがわかりました。

class Factory extend MyFactory
{
ClassA createClassA() { return new MyClass(); }
}

ご迷惑をお掛けしました。m__m

お礼日時:2009/03/06 15:34

どういう回答を求めているのか迷うわね。


タイトル通りabstractの説明をすればいいのかしら。

abstractなクラスは日本語で抽象クラスというわ。
abstractなクラスの特徴は、abstractなメソッドを持つことよ。

abstractなクラスは将来必ずsubクラスを持つことが確定しているわ。
そしてそのsubクラスは必ずabstractなメソッドを実装する必要があるの。
あえて、工場と言うわ。
親クラスは「工場」という抽象的なクラス。
この工場は何かを生産する。
でも単に「工場」では何を作るかわからないから
「製品を生産する」というメソッドは実装することができないわ。
だから戻り値「製品」メソッド名「生産する」で
「工場」という抽象クラスを用意しておくの。

ここで「工場」というクラスを継承して「車の工場」というサブクラスを用意すると
「生産する」の内容は「車」を生産することになるわけ。
もちろん「車」は「製品」を継承してね。

こういう作り方をしておけば
どんな工場でも同じメソッド名と同じ戻り値でアクセスできるから
将来拡張を行うとき、サブクラスを変更するだけで済んじゃうという
とっても便利な考え方なのよ。


また、abstractなクラスは
サブクラスを実装するための設計書
という見方もできるわ。
abstractなクラスのサブクラスは
必ずabstractなクラスのabstractなメソッドを実装しなさい
というルールができあがるわ。

ちなみに、abstractなクラスを継承したクラスで
abstractなメソッドを実装しなかった場合
そのクラスもabstractなクラスとする必要があるので注意よ。
    • good
    • 0
この回答へのお礼

ありがとうございます。

当方はJavaを勉強しています。
abstractなどjavaの基本文法は読破しております。
現在は、例外処理の仕方を勉強しています。

平行して、デザインパターンも勉強していました。
アブストラクトファクトリーパターンという23個中の2個目でつまずきました。
が、よくよく読むと、createClassA()メソッドが存在することがわかりました。

class Factory extend MyFactory
{
ClassA createClassA() { return new MyClass(); }
}

ご迷惑をお掛けしました。m__m

お礼日時:2009/03/06 15:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!