<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>継承</title><revhistory><revision><revnumber>39</revnumber><date>2010-12-01 00:33:16</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>38</revnumber><date>2010-11-30 01:07:33</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>37</revnumber><date>2010-11-11 01:26:48</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>36</revnumber><date>2010-11-09 01:58:36</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>35</revnumber><date>2010-11-09 01:56:07</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>34</revnumber><date>2010-11-09 01:37:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>33</revnumber><date>2010-11-09 01:36:32</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>32</revnumber><date>2010-11-07 01:44:43</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>31</revnumber><date>2010-11-06 13:06:38</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>30</revnumber><date>2010-11-06 13:05:11</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>29</revnumber><date>2009-11-02 05:27:09</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>28</revnumber><date>2009-11-02 05:26:12</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>27</revnumber><date>2009-11-02 05:25:31</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>26</revnumber><date>2009-11-02 05:22:18</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>25</revnumber><date>2009-11-02 05:20:36</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>24</revnumber><date>2009-10-30 04:38:07</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>23</revnumber><date>2009-10-30 04:37:32</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>22</revnumber><date>2009-10-23 11:31:48</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>21</revnumber><date>2009-10-23 04:40:52</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>20</revnumber><date>2009-10-23 04:40:12</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>19</revnumber><date>2009-10-23 04:38:09</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>18</revnumber><date>2009-10-23 04:31:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>17</revnumber><date>2009-10-23 04:26:37</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>16</revnumber><date>2009-10-23 04:23:03</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2009-10-23 04:18:53</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2009-10-23 04:17:57</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2008-12-02 12:26:07</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2008-11-29 23:38:35</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2008-11-26 05:48:21</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2008-11-26 05:25:16</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2008-11-26 05:23:54</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2008-11-26 05:18:07</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2008-11-26 05:05:40</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2008-11-26 05:04:58</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2008-11-26 05:03:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2008-11-26 05:01:58</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2008-11-26 05:01:02</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2008-11-25 10:08:11</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2008-11-25 10:01:25</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>継承</title><para>すでにあるクラスを拡張して新しいクラスを作ることができます。 </para><para>このとき、もとのクラスの性質や機能は新しいクラスでも利用できます。 </para><para>このことを<emphasis role="strong">継承</emphasis>といいます。 </para><!--rule (<hr>) is not applicable to DocBook--><section><title>スーパークラス、サブクラス</title><para>クラス１を拡張してクラス２が作られたとき、 </para><itemizedlist><listitem override="none"><para>クラス１はクラス２のスーパークラスである </para></listitem><listitem override="none"><para>クラス２はクラス１のサブクラスである </para></listitem></itemizedlist><para>といい、次のような図で表わします。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%B6%99%E6%89%BF?action=AttachFile&amp;do=get&amp;target=keisyo1.png"/></imageobject><textobject><phrase>keisyo1.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>スーパークラスのことを親クラス、サブクラスのことを子クラスと言うこともあります。 </para><para>直接の親子でなく、親の親などのときでもスーパークラス、サブクラスと言います。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>サブクラスの定義</title><para>作成するクラス名の後ろに </para><itemizedlist><listitem override="none"><para>extends スーパークラス名 </para></listitem></itemizedlist><para>の形式で記述します。 上の図の関係のクラス２を作る場合は次のようになります。 </para><itemizedlist><listitem override="none"><screen><![CDATA[ public class クラス２ extends クラス１
 {
   ...
 }]]></screen></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>属性の継承</title><para>スーパークラスで定義された属性はサブクラスに継承されます。 </para><para>次のようにクラス１とクラス２が定義されている場合、 </para><itemizedlist><listitem override="none"><screen><![CDATA[ public class クラス１
 {
     double x;
     double y;
 }]]></screen><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%B6%99%E6%89%BF?action=AttachFile&amp;do=get&amp;target=keisyo2.png"/></imageobject><textobject><phrase>keisyo2.png</phrase></textobject></inlinemediaobject> </para><screen><![CDATA[ public class クラス２ extends クラス１
 {
     double z;
 }]]></screen><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%B6%99%E6%89%BF?action=AttachFile&amp;do=get&amp;target=keisyo3.png"/></imageobject><textobject><phrase>keisyo3.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>クラス１のインスタンスは </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%B6%99%E6%89%BF?action=AttachFile&amp;do=get&amp;target=keisyo4.png"/></imageobject><textobject><phrase>keisyo4.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>クラス２のインスタンスは </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%B6%99%E6%89%BF?action=AttachFile&amp;do=get&amp;target=keisyo5.png"/></imageobject><textobject><phrase>keisyo5.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>となります。 クラス１の項目にクラス２で定義された項目が加わった形です。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>メソッドの継承</title><para>スーパークラスで定義されたメソッドはサブクラスでも利用できます。 </para><para>メソッドが呼ばれたときの動作はつぎのとおりです。 </para><itemizedlist><listitem override="none"><para><emphasis role="strong">（１）</emphasis>インスタンスの属するクラスでメソッドが定義されているときは、それが使われます。 </para></listitem><listitem override="none"><para><emphasis role="strong">（２）</emphasis>インスタンスの属するクラスでメソッドが定義されていないときは、スーパークラスで定義されている同じ名前のメソッドが使われます。 </para><itemizedlist><listitem override="none"><para>直接の親だけでなく、親の親の親...と順に探します。 </para></listitem></itemizedlist></listitem><listitem override="none"><para><emphasis role="strong">（３）</emphasis>スーパークラスにもメソッドがみつからないときは、エラーとなります。 </para></listitem></itemizedlist><para>スーパークラスで定義されているメソッドと同じ名前のメソッドを サブクラスで再定義することを メソッドの<emphasis role="strong">オーバーライド</emphasis>といいます。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>コンストラクタの継承</title><para>コンストラクタは継承されません。 </para><para>サブクラスのコンストラクタが呼ばれたときは </para><orderedlist numeration="arabic"><listitem><para>スーパークラスのコンストラクタで記述された処理 </para></listitem><listitem><para>サブクラスで記述された処理 </para></listitem></orderedlist><para>の順に両方が行われます。 </para></section></section></article>