Jython中單繼承和多繼承的示例分析

這篇文章主要介紹Jython中單繼承和多繼承的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司專(zhuān)注于萬(wàn)榮企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。萬(wàn)榮網(wǎng)站建設(shè)公司,為萬(wàn)榮等地區(qū)提供建站服務(wù)。全流程按需策劃設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

Jython的繼承

類(lèi)繼承的能力是面向?qū)ο缶幊痰幕A(chǔ)。Jython 支持單繼承和多繼承。單繼承 意味只有一個(gè)父類(lèi),多繼承 意味著可以有多個(gè)父類(lèi)。

繼承是通過(guò)派生其他類(lèi)實(shí)現(xiàn)的。這些類(lèi)可以是其他 Jython 類(lèi),也可以是 Java 類(lèi)??梢詮娜魏螖?shù)量的純 Jython 類(lèi)或者 Java 實(shí)例派生,但是只能(直接或者間接)繼承一個(gè) Java 類(lèi)。不需要提供一個(gè)父類(lèi)。

父類(lèi)中的所有屬性或者方法都存在于所有子類(lèi)中,并可以被類(lèi)自身或者所有客戶(hù)使用(假定它是 publicly 變量)。在可以使用父類(lèi)的實(shí)例的所有地方都可以使用子類(lèi)的所有實(shí)例 ―― 下面是 多態(tài) 的一個(gè)例子。這些功能使重用、快速開(kāi)發(fā)和容易擴(kuò)展成為可能。

下面是一些繼承的例子:

class Class1: pass # no inheritance   class Class2: pass  class Class3(Class1): pass # single inheritance   class Class4(Class3,Class2): pass # multiple inheritance   from java import awt  from java import io   # inherit a Java class and interface and a Jython class  class MyPanel(awt.Panel, io.Serializable, Class2):       :

Jython的繼承——將類(lèi)作為值使用

還可以將類(lèi)賦值給變量(包括函數(shù)參數(shù))。這使編寫(xiě)基于類(lèi)的動(dòng)態(tài)代碼相當(dāng)容易,可以從下面的通用類(lèi)實(shí)例工廠看到這一點(diǎn):

def instanceMaker(xclass, *args):      return apply(xclass, args)   :   x = instanceMaker(MyClass) # same as: x = MyClass()

Jython的繼承——帶繼承的 init 方法

子類(lèi)的 __init__ 方法必須調(diào)用其父類(lèi)定義的所有 __init__ 方法,這不會(huì)自動(dòng)進(jìn)行。下面的兩個(gè)例子展示了如何使用帶繼承的 __init__ 方法。

class Class1(SuperClass):      def __init__ (self):            # no arguments        SuperClass.__init__(self)     # init my super-class        self.data = []                # set implicit data   class Class2(SuperClass):      def __init__ (self, v1, v2):    # 2 required arguments        SuperClass.__init__(self, v1) # init my super-class with v1        self.v2 = v2

下面是一些帶多繼承的初始化的例子:

class Class1(Super1, Super2):      def __init__ (self):             # no arguments        Super1.__init__(self)          # init each super-class        Super2.__init__(self)        self.data = []                 # set implicit data   class Class2(Super1, Super2):      def __init__ (self, v1, v2, v3): # 3 required arguments        # note you may do work before calling the super __init__ methods        self.v3 = v3                   # set data from parameter        Super1.__init__(self, v1)      # init each super-class        Super2.__init__(self, v2)

Jython的繼承——調(diào)用父類(lèi)方法

可以使用類(lèi)名限定調(diào)用所有父類(lèi)方法,如下所示:

class Class1:      def method1 (self):         :   class Class2(Class1):      def method1 (self): # override method1        :        Class1.method1(self) # call my super-class method        :       def method2 (self):         :   class Class3(Class2):      def method1 (self): # override method1        :        Class2.method1(self) # call my super-class method        :       def method3 (self):         :

注意,次要的方法定義(在 Class2 和 Class3 中)覆蓋了父類(lèi)定義。不要求子類(lèi)方法調(diào)用其父類(lèi)方法,不過(guò),如果它不這樣做,那么它就必須完整地替換父類(lèi)方法的函數(shù)。

Jython的繼承——調(diào)用方法

有兩種調(diào)用方法的語(yǔ)法(假定有一個(gè)由變量 mci 引用的 MyClass 實(shí)例):

mci.someMethod(...)   MyClass.someMethod(mci, ...)

***種形式通常用于類(lèi)客戶(hù)編碼中,而第二種形式更常用于在子類(lèi)中調(diào)用父類(lèi)方法。

以上是“Jython中單繼承和多繼承的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標(biāo)題名稱(chēng):Jython中單繼承和多繼承的示例分析
鏈接地址:http://bm7419.com/article36/geehsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、面包屑導(dǎo)航、網(wǎng)站改版、用戶(hù)體驗(yàn)小程序開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作