May 162012
 

5.継承

5-1.サブクラス

# -*- coding: utf-8 -*-
#5-1.サブクラス

#クラス
class TestClass:
 
    #メソッド(インスタンス関数)
    def func1(self):
        print "func1"
 
#継承クラス
class TestClassExtend(TestClass): #TestClassの継承
 
    #メソッド(インスタンス関数)
    def func2(self):
        print "func2"
 
test = TestClassExtend()          #インスタンス生成
 
test.func1()                      #インスタンス内のメソッド呼び出し(継承元)
#func1
test.func2()                      #インスタンス内のメソッド呼び出し
#func2

5-2.メソッドのオーバーライド

# -*- coding: utf-8 -*-
#5-2.メソッドのオーバーライド
 
#クラス
class TestClass:
 
    #メソッド(インスタンス関数)
    def func(self):
        print "func"
 
#継承クラス
class TestClassExtend(TestClass):
 
    #メソッド(インスタンス関数)
    def func(self):               #オーバーライド
        print "override"
 
test = TestClass()
test.func()
#func
 
test = TestClassExtend()
test.func()
#override

5-3.スーパークラスの使用

# -*- coding: utf-8 -*-
#5-1.スーパークラスの使用
 
#継承元クラス
class TestClass(object):         #基底クラスの定義文に(object)を入れる
 
    #継承元コンストラクタ
    def __init__(self,_name):
        self.name = _name
 
    #継承元メソッド
    def func1(self):
        print self.name
 
#継承先クラス
class TestClassExtend(TestClass):
 
    #継承先コンストラクタ
    def __init__(self,_name,_age):
        #スーパークラスのコンストラクタ呼び出し
        super(TestClassExtend, self).__init__(_name)
        self.age = _age
 
    #継承先メソッド
    def func2(self):
        #スーパークラスの関数呼び出し
        super(TestClassExtend, self).func1()
        print self.age
 
test1 = TestClass("test1")
test2 = TestClassExtend("test2",20)
 
test1.func1()
#test1
 
test2.func1()
#test2
test2.func2()
#test2
#20

演習(7)

演習(5)で作成したクラスを継承し、新たなサブクラスを3つ作成しなさい。
なお、継承先のクラスには以下のコンストラクタ、属性、メソッドを加えること。

<サブクラス1>

コンストラクタ:
__init__() … 継承元のコンストラクタを継承し、新たな属性(radius)を引数に加える

属性:
radius … 球の半径

メソッド:
drawSphere() … スーパークラスの属性とサブクラスの属性を用いて、球を描画する(引数なし)

[参考]
AddSphere()
http://www.rhino3d.com/5/ironpython/functions/AddSphere.htm

<サブクラス2>

コンストラクタ:
__init__() … 継承元のコンストラクタを継承し、新たな属性(width, depth, height)を引数に加える

属性:
width … 直方体の横幅
depth … 直方体の奥行き
height … 直方体の高さ

メソッド:
drawBox() … スーパークラスの属性とサブクラスの属性を用いて、直方体を描画する(引数なし)

AddBox()
http://www.rhino3d.com/5/ironpython/functions/AddBox.htm

<サブクラス3>

コンストラクタ:
__init__() … 継承元のコンストラクタを継承する

属性:
なし

メソッド:
drawLine() … 自身と自身以外のインスタンスの原点を結ぶ線を引く。引数:自身以外のインスタンス
(スーパークラスメソッドをオーバーライドする)

[参考]
AddLine()
http://www.rhino3d.com/5/ironpython/functions/AddLine.htm

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>