Jython中单继承和多继承的示例分析

这篇文章主要介绍Jython中单继承和多继承的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Jython的继承

类继承的能力是面向对象编程的基础。Jython 支持单继承和多继承。单继承 意味只有一个父类,多继承 意味着可以有多个父类。

继承是通过派生其他类实现的。这些类可以是其他 Jython 类,也可以是 Java 类。可以从任何数量的纯 Jython 类或者 Java 实例派生,但是只能(直接或者间接)继承一个 Java 类。不需要提供一个父类。

父类中的所有属性或者方法都存在于所有子类中,并可以被类自身或者所有客户使用(假定它是 publicly 变量)。在可以使用父类的实例的所有地方都可以使用子类的所有实例 ―― 下面是 多态 的一个例子。这些功能使重用、快速开发和容易扩展成为可能。

下面是一些继承的例子:

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的继承——将类作为值使用

还可以将类赋值给变量(包括函数参数)。这使编写基于类的动态代码相当容易,可以从下面的通用类实例工厂看到这一点:

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

Jython的继承——带继承的 init 方法

子类的 __init__ 方法必须调用其父类定义的所有 __init__ 方法,这不会自动进行。下面的两个例子展示了如何使用带继承的 __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的继承——调用父类方法

可以使用类名限定调用所有父类方法,如下所示:

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 中)覆盖了父类定义。不要求子类方法调用其父类方法,不过,如果它不这样做,那么它就必须完整地替换父类方法的函数。

Jython的继承——调用方法

有两种调用方法的语法(假定有一个由变量 mci 引用的 MyClass 实例):

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

***种形式通常用于类客户编码中,而第二种形式更常用于在子类中调用父类方法。

以上是“Jython中单继承和多继承的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注蜗牛博客行业资讯频道!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram