svn: /phpdoc/ja/trunk/language/oop5/ variance.xml
[email protected] (Yoshinari Takaoka)
| Newsgroups | php.doc.ja |
|---|---|
| Message-ID | <[email protected]> |
mumumu Fri, 13 Mar 2020 09:40:51 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=349402
Log:
Formalize wording in variance page, remove any wording that speaks to the audience
Changed paths:
U phpdoc/ja/trunk/language/oop5/variance.xml
Modified: phpdoc/ja/trunk/language/oop5/variance.xml
===================================================================
--- phpdoc/ja/trunk/language/oop5/variance.xml 2020-03-13 08:59:38 UTC (rev 349401)
+++ phpdoc/ja/trunk/language/oop5/variance.xml 2020-03-13 09:40:51 UTC (rev 349402)
@@ -1,24 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 348562 Maintainer: mumumu Status: ready -->
+<!-- EN-Revision: 349392 Maintainer: mumumu Status: ready -->
<sect1 xml:id="language.oop5.variance" xmlns="http://docbook.org/ns/docbook">
<title>共変性と反変性</title>
<para>
- PHP 7.4.0 より前のバージョンでは、クラスのメソッドは 不変
- な引数の型と、不変 な戻り値の型をサポートしていました。
- これは、<varname>T</varname>
- という型を引数と戻り値に持つメソッドが親クラスにあった場合、
- 対応する子クラスのメソッドの引数や戻り値の型 <emphasis>もまた</emphasis>
- <varname>T</varname> <emphasis>でなければならない</emphasis>
- ということです。
+ PHP 7.2.0 で、子クラスのメソッドの引数の型の制限を除く形で、反変性が一部サポートされました。
+ PHP 7.4.0 以降で、共変性と反変性が完全にサポートされるようになりました。
</para>
<para>
- PHP 7.4.0 以降では、共変性 と 反変性 の概念がサポートされています。
- 一方でこれらはややこしく <emphasis>聞こえる</emphasis>
- かもしれませんが、実際はかなり単純、かつオブジェクト指向プログラミングに非常に役立つものです。
+ 共変性とは、子クラスのメソッドが、親クラスの返り値よりも、より特定の、狭い型を返すことを許すことです。
+ 一方で、反変性とは、親クラスのものよりも、より抽象的な、広い型を引数に指定することを許すものです。
</para>
<sect2 xml:id="language.oop5.variance.covariance">
@@ -25,13 +19,8 @@
<title>共変性</title>
<para>
- 共変性
- とは、子クラスのメソッドが、親クラスの返り値よりも、より特定の、狭い型を返すことを許すことです。
- これは、例で示したほうが良いでしょう。
- </para>
-
- <para>
- 単純な抽象クラスの親である<varname>Animal</varname> から始めましょう。
+ 共変性がどのように動作するかを示すために、
+ 単純な抽象クラスの親である<varname>Animal</varname> を作ることにします。
このクラスは子クラス <varname>Cat</varname> と <varname>Dog</varname>
に継承されています。
</para>
@@ -78,7 +67,6 @@
<varname>Animal</varname>, <varname>Cat</varname> または
<varname>Dog</varname>
クラスの新しいオブジェクトを返すファクトリをいくつか作ってみることにします。
- 以下では、共変性の実際の例が出てきます。
</para>
<informalexample>
@@ -129,8 +117,6 @@
<title>反変性</title>
<para>
- 一方で 反変性 は、子クラスのメソッドで、
- 親クラスのものよりも、より抽象的な、広い型を引数に指定することを許すものです。
既に示した <varname>Animal</varname>, <varname>Cat</varname> および
<varname>Dog</varname> クラスの例を引き続き使い、
<varname>Food</varname> と <varname>AnimalFood</varname> クラスを追加し、
@@ -158,7 +144,7 @@
public function eat(AnimalFood $food)
{
- echo $this->name . " nom noms " . get_class($food);
+ echo $this->name . " eats " . get_class($food);
}
}
]]>
@@ -180,7 +166,7 @@
class Dog extends Animal
{
public function eat(Food $food) {
- echo $this->name . " nom noms " . get_class($food);
+ echo $this->name . " eats " . get_class($food);
}
}
]]>
@@ -209,8 +195,8 @@
&example.outputs;
<screen>
<![CDATA[
-Ricky nom noms AnimalFood
-Mavrick nom noms Food
+Ricky eats AnimalFood
+Mavrick eats Food
]]>
</screen>