- 締切済み
javaのabstractの意味
javaのabstractの意味 abstract class Factory { abstract ClassA createClassA(); } createClassA()メソッドは定義していません。 abstract ClassA createClassA();の意味はなんですか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- chaoruko
- ベストアンサー率53% (7/13)
abstractクラスは誰かに継承してもらって始めて意味がでてきます 継承したほうのクラスは、abstractなクラスにかいてあるabstractなメソッドを実装しなければなりません 実装というのは ClassA createClassA(){ // いろいろ処理 return ClassAのインスタンス; } というふうに、中括弧の中身を書くことです
- askaaska
- ベストアンサー率35% (1455/4149)
どういう回答を求めているのか迷うわね。 タイトル通りabstractの説明をすればいいのかしら。 abstractなクラスは日本語で抽象クラスというわ。 abstractなクラスの特徴は、abstractなメソッドを持つことよ。 abstractなクラスは将来必ずsubクラスを持つことが確定しているわ。 そしてそのsubクラスは必ずabstractなメソッドを実装する必要があるの。 あえて、工場と言うわ。 親クラスは「工場」という抽象的なクラス。 この工場は何かを生産する。 でも単に「工場」では何を作るかわからないから 「製品を生産する」というメソッドは実装することができないわ。 だから戻り値「製品」メソッド名「生産する」で 「工場」という抽象クラスを用意しておくの。 ここで「工場」というクラスを継承して「車の工場」というサブクラスを用意すると 「生産する」の内容は「車」を生産することになるわけ。 もちろん「車」は「製品」を継承してね。 こういう作り方をしておけば どんな工場でも同じメソッド名と同じ戻り値でアクセスできるから 将来拡張を行うとき、サブクラスを変更するだけで済んじゃうという とっても便利な考え方なのよ。 また、abstractなクラスは サブクラスを実装するための設計書 という見方もできるわ。 abstractなクラスのサブクラスは 必ずabstractなクラスのabstractなメソッドを実装しなさい というルールができあがるわ。 ちなみに、abstractなクラスを継承したクラスで abstractなメソッドを実装しなかった場合 そのクラスもabstractなクラスとする必要があるので注意よ。
お礼
ありがとうございます。 当方はJavaを勉強しています。 abstractなどjavaの基本文法は読破しております。 現在は、例外処理の仕方を勉強しています。 平行して、デザインパターンも勉強していました。 アブストラクトファクトリーパターンという23個中の2個目でつまずきました。 が、よくよく読むと、createClassA()メソッドが存在することがわかりました。 class Factory extend MyFactory { ClassA createClassA() { return new MyClass(); } } ご迷惑をお掛けしました。m__m
- OKwebb
- ベストアンサー率44% (92/208)
抽象クラスFactoryには引数なしでClassAを返すcreateClassAメソッドが あるってことですね。 抽象クラスFactoryを継承するクラスには『引数なしでClassAを返すcreateClassAメソッド』を実装する必要があります。 ・・・むつかしい・・・
お礼
ありがとうございます。 当方はJavaを勉強しています。 abstractなどjavaの基本文法は読破しております。 現在は、例外処理の仕方を勉強しています。 平行して、デザインパターンも勉強していました。 アブストラクトファクトリーパターンという23個中の2個目でつまずきました。 が、よくよく読むと、createClassA()メソッドが存在することがわかりました。 class Factory extend MyFactory { ClassA createClassA() { return new MyClass(); } } ご迷惑をお掛けしました。m__m
補足
abstract ClassA createClassA();で、 createClassA()メソッドが実装されるのかと思いました。
お礼
ありがとうございます。 当方はJavaを勉強しています。 abstractなどjavaの基本文法は読破しております。 現在は、例外処理の仕方を勉強しています。 平行して、デザインパターンも勉強していました。 アブストラクトファクトリーパターンという23個中の2個目でつまずきました。 が、よくよく読むと、createClassA()メソッドが存在することがわかりました。 class Factory extend MyFactory { ClassA createClassA() { return new MyClass(); } } ご迷惑をお掛けしました。m__m
補足
ClassAオブジェクトに、 createClassA()などの生成系を集めていたようです。 プログラムを追うのに失敗していました。