質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

818閲覧

クラスを継承すると「データ型」が継承されるという意味

blueletter5

総合スコア24

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/06/15 04:29

編集2021/06/15 05:34

とある有料のオンライン学習サイトをつかっています。
学習項目の流れは以下の通りです。
現在「15 型の継承について見ていこう」で躓いています。

01 オブジェクトを使ってみよう (02:56)
概要
オブジェクト型の使い方

02 投稿に関する処理を作ろう
投稿に関する処理

03 クラスでデータ型を定義しよう
class
プロパティ
メソッド

04 インスタンスを作ってみよう
インスタンスの生成
処理の書き換え

05 コンストラクタを使ってみよう
コンストラクタの定義
コンストラクタの引数

06 クラスを整理しておこう
クラスを使うメリット

07 アクセス修飾子について見ていこう
アクセス修飾子
public
private

08 メソッドを介してプロパティを操作しよう
メソッドを介したプロパティの操作
カプセル化

09 プロパティで型宣言をしてみよう
型宣言
declare()

10 staticキーワードを使ってみよう
クラスプロパティ
クラスメソッド

11 オブジェクト定数を使ってみよう
const
オブジェクト定数

12 クラスを継承してみよう
クラスの継承
extends

13 子クラスで独自の実装をしていこう
独自のメソッドの定義

14 メソッドをoverrideしてみよう
override
final

「15 型の継承について見ていこう
型の継承
型を継承するメリット

この項目で記述されているソースコードは下記のとおりです。コード内のクラス、SponsoredPostは
クラスPostを継承しています。よって両方のクラスともにPost型として扱えると説明があります。

ソース内のこの箇所で processPostという関数を作成し、変数$postにPost型と型付けをし

function processPost(Post $post){ $post->show(); }

そしてforeachでPostで型付けられた$post型(クラスPostとそれを継承したクラスSponsoredPost)をひとつづつ取り出し、processPostを用いてそれぞれにshow()メソッドで表示させています。

foreach($posts as $post){ processPost($post); }

ソースコード

<?php class Post{ protected $text; public function __construct($text){ $this->text = $text; } public function show(){ printf('%s',$this->text); } } //↑------classPost------↑ //↓------classSponsoredPost------↓ 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); } } //↑------classSponsoredPost------↑ $posts = []; $posts[0] = new Post('hello'); $posts[1] = new Post('hello again'); $posts[2] = new SponsoredPost('iPhone','Apple'); function processPost(Post $post){ $post->show(); } // 型の継承がされているでSponsoredPost型のインスタンスも // Post型として扱うことができうまくいく foreach($posts as $post){ processPost($post); echo "<br>";

「15 型の継承について見ていこう」という項目では

Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。

型の継承 型を継承するメリット

とこの項目ではこう解説してあります。

クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。「15 型の継承について見ていこう」という項目では

Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。

型の継承 型を継承するメリット

とこの項目ではこう解説してあります。

クラスを継承すると親クラスのプロパティやメソッドが子クラスに継承されるというのは理解できています。私の知っているデータ型(文字列型、整数型、浮動小数点数型、論理型、配列型、オブジェクト型、リソース型、NULL)は下記の2か所だけです。
show()メソッド内の、['%s']と['%s by %s']で文字列が指定されています。

public function show(){ printf('%s',$this->text); }

public function show(){ printf('%s by %s', $this->text, $this->sponsor); }

したがってこの項目で説明されている

Post型の変数を受け取る関数を作って、データ型が継承されることを説明していきます。
型の継承 型を継承するメリット

とは、「クラスを継承する際にプロパティやメソッドだけでなく、データ型、ここでは(['%s']と['%s by %s'])も継承されるということが説明されているという解釈でよろしいのでしょうか?
少し混乱しています。もし私の解釈が間違っているようでしたら教えてください。
初学者です。よろしくお願いいたします。

<表示結果?
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/15 04:36

まず、慌てない。タイプミスなど読みにくいところがいくつかあるので、丁寧に直して。
m.ts10806

2021/06/15 04:42

別の言語の知識が前提としてあるのでしたら一旦忘れたほうが良いのでは。
guest

回答1

0

ベストアンサー

ウェブサイトや教材を眺めてもクラスの継承の際に”データ型”も継承されるというという点を見つけることが出来ませんでした。

クラスもデータ型の1つです。

投稿2021/06/15 05:12

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blueletter5

2021/06/23 03:06

難しく考えすぎていたようでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問