• ベストアンサー

多重継承

VC++ を使い始めて、 新しいクラスを多重継承で作ろうとして クラスウイザードを動かしたのですが、  多重継承がうまくできません。 クラスウイザードで、多重継承のクラスの作り方 を教えていただければ幸いです。  よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

class-wizardでできなくったって、 コードを直接(エディタで)書けばいいと思うのですが...

uyama33
質問者

お礼

 ありがとうごさいます。 そうします。

関連するQ&A

  • Javaでは多重継承ができない、の意味が分からない

    「Javaでは多重継承ができない」「インターフェイスでは多重継承できる」の意味が分かりません。 「インターフェイス」の多重継承とは、あくまでも擬似多重継承であって、本当の多重継承とは機能が異なる、ということなのでしょうか? それとも、多重継承はあくまでもクラスに対して行う言葉であり、それをインターフェイスで実現しているから、擬似なのでしょうか? つまり、機能としては完全に多重継承と同一? あるいは、それ以外? インターフェイスで可能なら、Javaで多重継承ができないという表現はおかしいように思うのですが…。 例えば、Javaのクラスでは多重継承できない、という言い方だと、また違った意味になるのでしょうか?

    • ベストアンサー
    • Java
  • 継承について

    みなさま、どうかお知恵を貸して下さい。 javaを勉強中で、本を読みながら試しに動かしています。 現在、実現したい動作が実現可能かどうかを調べているところです。 そのため、環境やバージョン等は決まっておりません。 むしろ、実現可能な環境やバージョンがあれば、教えてください。 実現したい機能ーーーーーーーーーーーー 親クラスAにメンバーとメソッドを定義します。 Aを継承する子クラスBを定義します。 プログラム中で、A、Bのインスタンスを生成します。 そして、A、Bを継承するCのインスタンスを生成したいのです。 Cのメンバーやメソッドは、Bと同様のものです。 この場合、BのクラスからCのようなインスタンスを作成することは、可能なのでしょうか? ・・・Cを定義していないので、おそらく不可能かと思います。 やはりこういった場合、Aを継承しているBを継承するCクラスを定義しておく必要があると考えています。 では、Cを継承するD,Dを継承するE・・・というように、いくつ必要になるかわからない場合、最大数分継承したクラスを用意すべきでしょうか。 なぜ、そうしたいかというと、組織図のようなものを作成したいのですが、組織図を構成する人数は、ユーザーの任意としたいのです。 継承したクラスを用いれば、そのまま組織図の体系を表現できる気がしました。 質問が大雑把になってしまい、申し訳ないのですが、お力を貸していただければ幸いです。

    • ベストアンサー
    • Java
  • 継承について

    下の質問の回答、間違ってませんか? -------------------------------------------- 親クラスのフィールドをメソッドを全て継承することになります。よって、サブクラス2は、サブクラス1とスーパークラスのメンバーを全て持つことになります。サブクラス2をインスタンス化すると、サブクラス1とスーパークラスが全てインスタンス化(コンピューターのメモリ上等に配置)されます。 ただ、可視性というものがあり、サブクラスから親クラスのメンバーを直接取り扱えない場合があります。privateや可視性修飾子無しの場合、サブクラスから直接取り扱えません。ただ、継承はされているので、インスタンスとしては存在します。例えば、 class スーパークラス{ private int abc; public int getAbc(){ return this.abc; } というクラスがあり、これを継承したサブクラスがあったとします。 サブクラスからは、privateなメンバー変数abcは直接取り扱うことができません。ただ、publicなgetAbcメソッドはサブクラスから取り扱えます。これで何が分かるかといいますと、privateなメンバーでもサブクラスに継承されるのです。単に可視性の問題で直接取り扱えないだけなのです。 また、オーバーライドされたメソッドがあったとしても、super.メソッド()で親のメソッドも呼べますので、これも継承されているのです。

  • 継承とは?

    お世話になります。 現在独学でJavaを学んでいるのですが、 『継承』のところでつまずいてしまいました。 参考書を元に継承の章を読んでいたのですが、 まず頭に浮かんだのは、 「継承をする意味は?」ということです。 継承をすることとしないことで何が違うのか。 また、必ず継承を行わなければならないような場面というのはあるのでしょうか? 特にSwingアプリケーションを作成していくと、 継承しないコードと継承したコードで記述ががらっと変わる気がしますが、 動作的に同じであればどっちでも良いのではないのか?というのが、 私の意見です。 この部分についてわかり安く説明している書籍やHPなどがありましたら 教えていただければ幸いです。

    • ベストアンサー
    • Java
  • 継承(extends)について

    extendsについてわからないことがあります。 次の3つのクラスがあった時、 class スーパークラス { ... class サブクラス1 extends スーパークラス { ... class サブクラス2 extends サブクラス1 {... サブクラス2は、サブクラス1でスーパークラスから継承しているフィールドをメソッドを継承するのでしょうか?

    • ベストアンサー
    • Java
  • Perlの継承について

    Perlの継承について (1) クラス Subclass (baseclassを継承) myfunc1 (2) クラス Baseclass myfunc1 myfunc2 (myfunc2内でmyfuncを呼び出している) (3) SubclassとBaseclassのmyfunc1は、引数が異なる。 上記のようにクラスSubclassとクラスBaseclassがあり、SubclassはBaseclassを継承しています。 ここで、SubclassではBaseclassのmyfunc1をオーバーライドしています。 1: my $obj = Subclass->new(); 2: $obj->myfunc2(); とすると、2にて、Subclassにて実装したmyfunc1が呼び出されます。これを、Baseclassのmyfunc1を呼び出させる方法はないでしょうか? (Baseclassはその他のクラスからも継承されておりいじりたくない。 しかし、SubclassはBaseclassを継承したうえでmyfunc1をオーバーライドしたい。) Baseclassのmyfunc2内の  $self->myfunc1(...) という記載を、  Baseclass::myfunc1($self, ...) という記載にしてしまえば動きそうな気もするのですが、何かつっこみがあればお願いします。

    • ベストアンサー
    • Perl
  • PHPでの継承について

    PHPの継承についての質問です。 PHPではクラスを継承する場合 スーパークラスのpublicとprotectedなメンバを継承すると いいます。 継承とは、スーパークラスで定義したメンバが サブクラスで定義されたことと同義である。 という前提で質問します。 ひょっとしたらこの前提も微妙に間違っているかもしれません。 以下の用なコードがあるとします。 <?php class AClass { //サブクラスへ継承されるスーパークラスのメソッド public function superClassPublicMethod(){ //【1】 $this-> subClassPrivateMethod(); } } class BClass extends AClass{ public function subClassPublicMethod(){//【2】 $this->subClassPrivateMethod(); } //継承したスーパークラスで定義されているメソッドからコールするサブクラスで定義したメソッド private function subClassPrivateMethod(){ //【3】 print __CLASS__; } } $obj = new BClass(); //サブクラスで定義した public なメソッドを実行 $obj->subClassPublicMethod(); //【4】 //スーパークラスから継承したpublic なメソッドを実行 $obj-> superClassPublicMethod();//【5】 ?> コレを実行すると【4】はきちんとBClassという結果が返ってきます。 ところがその下の【5】を実行すると Fatal error: Call to private method BClass::subClassPrivateMethod() from context 'AClass' in /usr/local/apache/htdocs/ext06.php on line 9 という実行時エラーが返ってきます。これを読むと、AClassのコンテキスト内ではBClassのprivateなメンバは コールできませんよ。というエラーですね。そもそもAClassのコンテキストということは、これはAClass内で実行されているということですよね? ここで、スーパークラスからこのpublicなメソッドは継承しているはずなのになぜ、サブクラスのBCLass内ではなくスーパークラスのAClass内という エラーが返っているのでしょうか? 継承とは、サブクラスで定義したと同義ではなく、スーパークラスまで内部的にアップキャスト?してコールしにいっているのでしょうか? 詳しい方ご教授ください。 よろしく御願いします。

    • ベストアンサー
    • PHP
  • 派生クラスはプロパティを継承するとは

    派生クラスはプロパティを継承するとはどういうことでしょうか? AbstractButtonクラスの派生クラスとは? 派生クラスはnemonicというプロパティを継承するとは? プログラミング用語でいう「派生クラス」と「プロパティの継承」の意味を簡単に噛み砕いて、教えてください。

  • IExtractIconを継承させたい

    VC++を使っているのでここに書きこまさせて下さい。 ATLを使ってプログラムを組んでいるのですが、わからないことがあります。 まず「ATL COM ウィザード」で雛型を作成しました。 その後「ATLオブジェクトの新規作成」でCFooクラスを「シンプルオブジェクト」を選択して作りました。 そのCFooクラスにIExtractIconを継承させようとしているのですが、うまくいきません。 class ATL_NO_VTABLE CFoo : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<CFoo,&CLSID_Foo>, public IDispatchImpl<IFoo, &IID_IFoo, &LIBID_FOOLib>, public IExtractIcon {/* 長いので省略します */}; このようにCFooを宣言しているのですが、 'CComObject<class CFoo>' : 抽象クラスあるいは構造体のオブジェクトが宣言されています。 というエラーが出てしまいます。 どのようにすれば解決できるのでしょうか? よろしくお願いします。

  • 【PHP】クラスを継承した際にデータ型も継承すると

    とある有料のオンライン学習サイトをつかっています。 学習項目の流れは以下の通りです。 現在「15 型の継承について見ていこう」で躓いています。 01 オブジェクトを使ってみよう (02:56) 02 投稿に関する処理を作ろう 03 クラスでデータ型を定義しよう 04 インスタンスを作ってみよう 05 コンストラクタを使ってみよう 06 クラスを整理しておこう 07 アクセス修飾子について見ていこう 08 メソッドを介してプロパティを操作しよう 09 プロパティで型宣言をしてみよう 10 staticキーワードを使ってみよう 11 オブジェクト定数を使ってみよう 12 クラスを継承してみよう 13 子クラスで独自の実装をしていこう 14 メソッドをoverrideしてみよう 15 型の継承について見ていこう *型の継承 *型を継承するメリット この項目で記述されているソースコードは下記のとおりです。コード内のクラス、SponsoredPostは クラスPostを継承しています。よって両方のクラスともにPost型として扱えると説明があります。 ソース内のこの箇所で processPostという関数を作成し、変数$postにPost型と型付けをしています そしてforeachでPostで型付けられた$post型(クラスPostとそれを継承したクラスSponsoredPost)をひとつづつ取り出し、processPostを用いてそれぞれにshow()メソッドで表示させています。 ----------------------- <?php class Post{ protected $text; public function __construct($text){ $this->text = $text; } public function show(){ printf('%s',$this->text); } class SponsoredPost extends Post{ private $sponsor; public function __construct($text, $sponsor){ parent::__construct($text); $this->sponsor = $sponsor; } public function show(){ printf('%s by %s', $this->text, $this->sponsor); } } $posts = []; $posts[0] = new Post('hello'); $posts[1] = new Post('hello again'); $posts[2] = new SponsoredPost('iPhone','Apple'); function processPost(Post $post){ $post->show(); } foreach($posts as $post){ processPost($post); ------------- クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。「15 型の継承について見ていこう」という項目では 『Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。』 と解説してあります。 クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。私の知っているデータ型(文字列型、整数型、浮動小数点数型、論理型、配列型、オブジェクト型、リソース型、NULL)は下記の2か所だけです。 show()メソッド内の、['%s']と['%s by %s']で文字列が指定されています。 したがってこの項目で説明されている 『Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。』 とは、「クラスを継承する際にプロパティやメソッドだけでなく、データ型、ここでは(['%s']と['%s by %s'])も継承されるということが説明されているという解釈でよろしいのでしょうか? 少し混乱しています。もし私の解釈が間違っているようでしたら教えてください。 初学者です。よろしくお願いいたします。 <表示結果>

    • ベストアンサー
    • PHP