• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【継承】親のメソッドの実行)

【継承】親のメソッドの実行

pixie-grasperの回答

回答No.3

#1です。 > 継承のためには、以下のように書くケースが多いということでしょうか? あなたの言う「継承」の意味がはっきりしないのですが、子クラスが存在する理由は「親クラスとは微妙に違うことをやりたい」という点にあるので、一般に、親クラスの同名メソッドが勝手に実行されては困ります。 例えば、次の例を考えてみてください。 親クラス:車  accelメソッド   自身の速度を5[m/s]上昇させる 子クラス:トヨタの何とかっていう車、親クラスは「車」  accelメソッド   自身の速度を10[m/s]上昇させる この場合、子クラスのaccelメソッドを呼び出した時に自動的に親クラスが呼び出されてしまうと、「そこ書いてあること」と「実際に起こること」との間に差が生まれてしまい、可読性を損なう等の問題が発生します。 その為、「わざわざ親クラスを呼び出したい」という場合には、「わざわざそう指定してやる必要がある」というのが、多くの言語でよく採られている方式です。 又、子クラスに「自身の親クラスはhoge型」だと明示するのは、親子関係を生じさせる時点で既にやっていることのように思えます。色々と無駄です。

TeferiMage
質問者

お礼

ありがとうございます。 「親クラスとは微妙に違うことをやりたい」で目的は合っていますが、 私が触ってきた言語では、通常、 何も書かなくても親の処理が実行され、 子側では、差分だけ、同名メソッドに追記するだけでよいということが多かった気がします。 なので、今のところ、C++では、 子側の関数で、 superclass::run を書く方法で考えています。 私は、 親クラス:車  speedプロパティ   x  accelメソッド   自身の速度をx[m/s]上昇させる 子クラス:トヨタの何とかっていう車、親クラスは「車」  accelメソッド   (※何も書かなくても、自身の速度をx[m/s]上昇させる)   速度を上昇した後に行う処理を、追記しておく。 という記述方式の言語が多かったです。 (superclass::accelを書く必要がなかったです)

関連するQ&A

  • 親クラスのポインタ、クラスを指定しないポインタ

    親クラス A (抽象メソッドX、Yの2つを持つ) と 子クラス B-1 (親はA、抽象メソッドX、Y、Zの3つを持つ) 子クラス B-2 (親はA、抽象メソッドX、Y、Wの3つを持つ) のように、子クラスでポリモーフィズムを実現しているとき、 クラスC   「実行時に、iniファイルに(1)と書かれていたら、B-1のクラスで実体化し、   iniファイルに(2)と書かれていたら、B-2のクラスで実体化する」  というクラスを作りたいです。 //////////////////////////////////////////////////////////////// 質問(1) その際、クラスCは、どうやってもZのメソッドや、Wのメソッドは書けない認識です。 (メソッド名もiniファイルから取るようにすれば別でしょうが。) この認識であっていますでしょうか? 質問(2) 逆に、XとYについては、それぞれ挙動の違う処理を行わせることができる認識です。 (クラスCで、親クラスAのポインタ型の変数を用意しておき、  そのポインタに、DLLのインスタンス化したものをいれておけば、  メソッドXとYについては実行可能という認識です)

  • 親の親のメソッドを呼ぶには?

    最近VC++をはじめていじって、 思った疑問です。 class A class B extends A class C extends C 各クラスはメソッドaaa()を持ってたとします。 Aのaaa()はsysout("A.aaa") Bのaaa()はsysout("B.aaa") (sysout = System.out.println) ってなっている場合 CのaaaでAのような振る舞いを見せることは可能なんでしょうか。 C++だと親子関係をすっとばして親の親(おじいちゃん?)のメソッドを呼べるようです。 javaだとsuper.aaa()みたいな書き方しかできないと おもうのですが、 親の親のメソッドを呼ぶってできるのでしょうか?

    • ベストアンサー
    • Java
  • 実行のされたクラスのメソッド

    OpenPNE(SNSオープンソース)のようなファイル数の多いアプリケーションは、 カスタマイズするにもファイル数が多すぎてどのファイルをいじれば良いのかわからず 動作解析に最も苦戦してしまいます… まず、カスタマイズしたいページをブラウザから表示したときに、このページが表示されるにあたって、このクラスのこのメソッドが実行された、等の情報がわかるとだいぶ助かるのですが、 実行された全てのメソッドをログに記録するか画面に表示することで、カスタマイズするべきファイルを把握したいのですが、どのような方法がありますでしょうか? ご教示頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • c#のToString()メソッド

    http://msdn.microsoft.com/ja-jp/library/ms173154(v=vs.90).aspx のページによると C# では、すべてのオブジェクトが ToString メソッドを継承します。このメソッドは、該当するオブジェクトの文字列形式を返します。たとえば、int 型の変数はすべて ToString メソッドを持ち、次のようにその変数の内容を文字列として返すことができます ↑と書いてあるのですが、C言語しか知らない自分にとってint型の変数が関数、メソッドを持つ、 という概念が理解できません。これはオブジェクト指向の話なのでしょうか?クラスを理解すると わかるようになりますか? どなたかよろしくお願いします。

  • 親クラスの初期化についてご教授ください

    javaの勉強を始めた者です。質問させてください。 以下のようなコードの、 親クラスの初期化をしている部分の挙動が、 うまく理解できません。 class p{ public int i = 3; public void foo(){}; } class c extends p{ public int i = 0; public void foo(){ System.out.print("foo "); } } public class b{ public static void main(String[] s){ p bar = new c(); // ←ここです bar.foo(); System.out.print(bar.i); } } 実行結果は「foo 3」です。 以下の点が理解できません。 ・なぜメソッドは子クラスのものが実行されるのに、プロパティは親クラスのものが表示されるのか? ・子クラスのコンストラクタを利用することで、いったいどのような挙動となるのか? オブジェクト指向の基礎を理解しれません・・・よろしくお願いします。

    • ベストアンサー
    • Java
  • 親クラスから呼ぶ

    Javaで親クラスから子クラスを生成して、子クラスから親クラスのメソッドを呼ぶことが できますか? Cなら関数ポインタで呼ぶことができました。 また、C#ならデリゲートなどを使用して呼べました。 可能であれば小さいサンプルでいいので、教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • Execメソッドについて

    お世話になります。 VBScriptについての質問です。 カテゴリがなかったので、こちらに書いてます。 DOS画面から、cscriptで別PGMを実行するのに Execメソッドを利用して、コマンド実行を行っていますが 処理をループでまわしているため、画面上にDOS画面が バサバサと一瞬あがってしまいます。 これを回避する方法ってありますか? (非表示にしたり、最小化したり。。) コマンド実行の戻り値をそのまま変数に受取りたいため Runメソッドは使えないと思っています。

  • 親クラスのメソッドを別のパッケージの子クラスでオーバーライドするときについて

    早速ではございますが、質問をさせていただきます。 親クラスのパッケージとは異なるパッケージに子クラスが あるとき、子クラスが親クラスのメソッドをオーバーライ ドするときに、親クラスのメソッドのアクセス修飾子を publicかprotectedにしなければコンパイルエラーになり ます。それはなぜなのでしょうか? どうかご教授のほどよろしくお願いします。

    • ベストアンサー
    • Java
  • 【C#】フォームクラスと他クラスとの連携について

    C#を勉強し始めたばかりの者です。 オブジェクト指向言語が初めてなので、オブジェクト指向的考え方が出来てないゆえの質問だとは思うのですが・・・。 質問内容ですが、フォームクラスと他のクラスとの連携方法がわかりません。 具体的に言いますと、フォームクラスで別のAというクラスを宣言し、そのクラスのB()メソッドを実行したときに中で発生した例外メッセージをフォームのコントロールで表示したい、という場合、どうすればよいのでしょうか? Doメソッドで例外メッセージをstringとして返し、それをフォームクラスの方で処理するしかないのでしょうか? お知恵を貸してください。よろしくお願いします。

  • 親クラスと子クラスのフィールドとメソッドについて

    親クラスと子クラスのフィールドとメソッドについて 以下のサンプルソースを実行した時の動作の原理について 教えてください。 oya型変数にkoクラスのインスタンスを作成した場合、 メソッドはkoクラスのものなのに、 フィールドはoyaクラスのものになるということが イマイチすっきり理解できません。 どういうことなんでしょうか。 ------------------------------------------------------- [ソース] public class exec { public static void main( String args[]){ oya obj = new ko(); System.out.println(obj.str_field); obj.disp_field(); } } public class oya{ String str_field="親実行"; public void disp_field(){ System.out.println(str_field); } } public class ko extends oya { String str_field = "子実行"; public void disp_field(){ System.out.println(str_field); } } ------------------------------------------------------- [実行結果] > 親実行 > 子実行 -------------------------------------------------------

    • ベストアンサー
    • Java