跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 和 C#等不允许多继承类,但是 Python 是可以的
未分類
31 1 月 2021

Java 和 C#等不允许多继承类,但是 Python 是可以的

Java 和 C#等不允许多继承类,但是 Python 是可以的

資深大佬 : fanqieipnet 6

Java 和 C#等不允许多继承类,但是 Python 是可以的。具体是怎么回事呢?今天番茄加速就来说一下。

  继承

  编写一个类

   class Animal(object):

   def shout(self):

   print(‘Animal is shouting…’)

  继承 Animal 的 Dog:

   class Dog(Animal):

   def shout(self):

   print(‘Dog is shouting…’)

  继承 Animal 的 Cat:

   class Cat(Animal):

   pass

  多继承(MixIn 设计原则)

   Java 和 C#等不允许多继承类,但是 Python 是可以的。

  通过多重继承,一个子类就可以同时获得多个父类的所有功能。

  在设计类的继承关系时,通常,主线都是单一继承下来的,例如,Dog 继承自 Animal 。

  但是,如果需要定制个性化的功能,通过多重继承就可以实现,比如,让 Dog 除了继承自 Animal 外,再同时继承 Runnable 类,这种设计理念称为 MaxxIn 原则。

  多态

   dog = Dog()

   dog.shout()

  结果:

   Dog is shouting…

  当子类和父类都存在相同的 shout()方法时,子类的 shout()覆盖了父类的 shout(),在代码运行的时候,总是会调用子类的 shout()。这样就获得了继承的另一个好处:多态。

  鸭子类型

   class Car(object):

   def shout(self):

   print(‘Car is shouting…’)

  静态语言,如 Java,如果需要传入 Animal 类型,则传入的对象必须是 Animal 类型或者它的子类 Dog 或 Cat,如果传入 Car 实例,将无法调用 shout()方法。

  对于 Python 这样的动态语言来说,则不一定需要传入 Animal 类型,只需要保证传入的对象有一个 shout()方法就可以了,传入 Car 实例不报错。

  这种,“file-like object“就是一种鸭子类型。

大佬有話說 (1)

  • 資深大佬 : goalidea

    cpp 也可以,各个语言的编程思想而已。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具