No.2ベストアンサー
- 回答日時:
言語は PHP でしたか。
PHPのクラスの仕様は特殊な上に、私自身がPHP では継承をあまり使ったことがないので、マニュアル引き引きの
回答になりますが…。
・子クラスのコンストラクタでしか呼び出せない、という理解で合ってる
でしょうか?
⇒PHPでは試したことがないうえに、マニュアルに明確なことが
書いてないので回答しにくいのですね。少なくともその他の一般
的な言語(CとかJAVAとか)ではその理解であっています。
# CとかJAVAとかでは、『子のコンストラクタの最初』 以外で
# 親のコンストラクタを呼び出すと、エラーで動きません。
PHPではどう振る舞うか、確実なところはわかりませんが、
やっぱりエラーになると思われます。
・暗黙の内にコールされることはありません
⇒PHPの仕様です。マニュアルに従って、呼び出してください。
(他の言語からPHPに移った人は、よく引っかかる罠なんだとか)
・所有関係
クラスAに実装した変数 (もしくはプロパティ)に、クラスBのインスタンス
を入れた場合、『A が B (のインスタンス) を所有している』 と言います。
この関係を親-子という場合もあります。
No.1
- 回答日時:
使用している言語が指定されていないうえに、『親子』と言っている
関係があいまいなので回答しにくいのです。一般論で回答します。
・親子と言っている関係が継承関係で、
親クラス=スーパークラス
子クラス=サブクラス
であるならば。
⇒ 親クラスのコンストラクタは子クラスのコンストラクタでしか
呼び出せません。そういうことがしたいなら、親クラスに
コンストラクタとは別に初期化用のメソッドを作るのが普通
です。
⇒ 親クラスのコンストラクタ呼出を省略することが可能な言語も
あります。(普通はデフォルトコンストラクタ (引数なしのコンス
トラクタ) が自動的に呼び出されます)
・親子と言っている関係が所有関係で、
親クラス=子クラスを所有する
であるならば。
⇒ 実装次第で子クラスのメソッドから呼び出すことも不可能
ではありません。インスタンスの管理をキチンとしないと
親クラスが必要以上に生成されてしまう可能性がありますけどね。
⇒ 親クラスのコンストラクタを呼ばないと、インスタンスができません。
質問自体がナンセンスです。
この回答への補足
回答ありがとうございます。
言語はPHPで、親子は継承関係の意味で質問しました。
改めて確認したら、「子クラスのコンストラクタの 中で」と書いてありましたので、
子クラスのコンストラクタでしか呼び出せない、という理解で合ってるでしょうか?
▽PHP: コンストラクタとデストラクタ - Manual
http://php.net/manual/ja/language.oop5.decon.php
>親クラスのコンストラクタ呼出を省略することが可能な言語もあります
PHPは、親クラスのコンストラクタを利用する場合は、子クラス(のコンストラクタ)で明示的に呼び出す必要があると思うのですが、利用したくない場合は、呼び出さなくても良いのでしょうか?
>暗黙の内にコールされることはありません
と書いてあったので、推奨されていない、というか、必ず呼び出すようにした方が良いのかな、と思い、質問しました
>所有関係で、親クラス=子クラスを所有する
所有関係、って初めて聞いた言葉なのですが、どういう意味なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- 学校 今年初めてクラスが同じになった女子がいるんですけどなんて呼んだらいいか分からなくてこの数ヶ月呼びかけ 4 2023/07/14 17:10
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- 友達・仲間 名前呼びから苗字呼びに変わった理由 クラスメイトのAという女子が最初は私のことを名前で呼んでいました 7 2023/08/20 14:49
- 学校 同じクラスの子が英語の小テストで単語帳をチラチラ見ており、先生にカンニングするなと注意されていたので 2 2023/07/16 20:06
- モテる・モテたい 好きな人に名前で呼ばれたい… 3 2022/06/04 14:42
- 友達・仲間 学生さんに質問です。 同じクラスの人を女子同士ならお互い下の名前を呼び捨てで呼び、男子同士ならお互い 2 2023/03/08 19:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラッパークラスって何ですか?
-
'_'(アンダースコア)の使い方...
-
「クラス関数」「メンバ関数」...
-
親クラスコンストラクタを呼び...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
「@$変数」の「@の意味は?」
-
apache・phpが起動しない・・・
-
PHPの設定で、 エラーが発生し...
-
VBSの「MsgBox」について
-
.phpと.incファイルの違いはな...
-
別ファイルの変数を呼び出した...
-
CFileDialogの最初のディレクト...
-
【PHP】declare命令で”Fatal er...
-
PHPのif文でその処理を途中で抜...
-
URLが.PHPってどういう...
-
.phpファイルが、表示されない
-
FTPコマンドでディレクトリごと...
-
【file_exists】ファイルが存在...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
ラッパークラスって何ですか?
-
class定義のphpをファイル分割...
-
PHPの名前空間について質問です。
-
配列とオブジェクトの違い
-
phpのクラスにて別ファイルの変...
-
文字連結中の三項演算子について
-
PHP4、PHP5 1ファイル複数クラ...
-
PHP5 コンストラクタや初期化の...
-
プログラムにも慣例みたいなも...
-
(クラス関連)staticキーワー...
-
phpで使用不可のクラス名
-
phpにおける初期化の意味
-
PHPでサブクラスからスーパクラ...
-
phpで時間を増やしていくにはど...
-
クラス
-
[CakePHP2.2] :: の意味と役割
-
Objectの型チェック
-
'_'(アンダースコア)の使い方...
-
$this->pets[$i]->report();の...
おすすめ情報