-
python可以继承多个类吗_多个python类继承
2021-01-14 12:39:04对任何一个父类调用__init__都不会改变类的继承结构,不。您只是在更改创建实例时除了C.__init__之外还运行什么初始化器方法。C同时继承{}和{},并且由于继承顺序的不同,{}的所有方法都被{}上的方法所遮蔽。在如果...对任何一个父类调用__init__都不会改变类的继承结构,不。您只是在更改创建实例时除了C.__init__之外还运行什么初始化器方法。C同时继承{}和{},并且由于继承顺序的不同,{}的所有方法都被{}上的方法所遮蔽。在
如果需要根据构造函数中的值更改类继承,请创建两个不同结构的独立类。然后提供另一个可调用的API来创建实例:class CA(A):
# just inherit __init__, no need to override
class CB(B):
# just inherit __init__, no need to override
def C(path):
# create an instance of a class based on the value of path
class_map = {'A': CA, 'B': CB}
return class_map[path](path)
API的用户仍然有名称C()来调用;C('A')从C('B')生成一个不同类的实例,但它们都实现了相同的接口,因此这对调用者来说并不重要。在
如果有一个公共的'C'类在isinstance()或issubclass()测试中使用,则可以混合使用一个,并使用^{} method重写返回的子类:
^{pr2}$
调用__new__来构造新的实例对象;如果__new__方法返回该类的实例(或其子类),则将自动对该新实例对象调用__init__。这就是为什么C.__new__()返回CA.__new__()或CB.__new__();__init__的结果。在
后者演示:>>> C('A').something()
Function A
>>> C('B').something()
B function with something
>>> isinstance(C('A'), C)
True
>>> isinstance(C('B'), C)
True
>>> isinstance(C('A'), A)
True
>>> isinstance(C('A'), B)
False
如果这两个选项都不适用于您的特定用例,则必须在C上的新somemethod()实现中添加更多路由,然后根据self.path调用A.something(self)或{}。当您必须对每个方法都执行此操作时,这会很快变得非常麻烦,但decorator可以在这方面提供帮助:from functools import wraps
def pathrouted(f):
@wraps
def wrapped(self, *args, **kwargs):
# call the wrapped version first, ignore return value, in case this
# sets self.path or has other side effects
f(self, *args, **kwargs)
# then pick the class from the MRO as named by path, and call the
# original version
cls = next(c for c in type(self).__mro__ if c.__name__ == self.path)
return getattr(cls, f.__name__)(self, *args, **kwargs)
return wrapped
然后在类的空方法上使用该方法:class C(A, B):
@pathrouted
def __init__(self, path):
self.path = path
# either A.__init__ or B.__init__ will be called next
@pathrouted
def something(self):
pass # doesn't matter, A.something or B.something is called too
然而,这变得非常不和谐和丑陋。在
-
一个 CSS 类可以继承一个或多个其他类吗?
2009-06-30 19:10:57<p>I feel dumb for having been a web programmer for so long and not knowing the answer to this question, I actually hope it's possible and I just didn't know about rather than what I think is the ... -
接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗?
2018-08-07 17:22:341、接口可以继承接口,抽象类不可以继承接口,但可以实现接口。 2、抽象类可以继承实体类。...4、一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class ...1、接口可以继承接口,抽象类不可以继承接口,但可以实现接口。
2、抽象类可以继承实体类。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
3.抽象类可以继承实体类,就是因为抽象类的可以继承性和有方法。
4、一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class D implements A,B,C{} 但是一个类只能继承一个类,不能继承多个类 class B extends A{} 在继承类的同时,也可以继承接口: class E extends D implements A,B,C{} 这也正是选择用接口而不是抽象类的原因。
-
你确定C++一个类继承多个类是靠谱的吗?
2020-08-15 18:57:13我一直在想一个事:Java只能继承一个类,那么C++为什么就能继承多个类呢 ……不想了,打把吃鸡!See you! ……不行!还是自己研究下! 我对队友说:有队友逃跑或加入竞赛失败,你们可以在飞机起飞前安全退出,不影响...前言
我一直在想一个事:Java只能继承一个类,那么C++为什么就能继承多个类呢
……不想了,打把吃鸡!See you!
……不行!还是自己研究下!
我对队友说:有队友逃跑或加入竞赛失败,你们可以在飞机起飞前安全退出,不影响任何屁事。只听见队友应了声:TM的老子差3分上王牌!
哼,差3分上王牌,不知道人家从王牌升到了星钻呢
1.我是来凑字数的
自己在Java写了一个程序,然后在C++写了一个程序
Java:package XXX; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Abc extends JFrame { public static void main(String [] args){ Abc a =new Abc(); } public Abc(){ this.setSize(350,240); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
C++:
#include<iostream> using namespace std; class Abc { public: Abc() { cout<<"I'm Talking now."; } }; class aBC { public: aBC() { cout<<"I'm also Talking now."; } }; class AbC :public Abc,public aBC//继承 { //TODO }; int main() { AbC a(); return 0; }
2.看看两个程序的优缺点
Java程序:
优:容易实现、扩展
缺:只能单继承、父类修改后子类也要修改。
C++程序:
优:可以实现多继承、扩展性可提高、父类与子类相似但又不同
缺:灵活性降低
严重缺点:
1.程序猿其实根本用不上它
对于C++多继承,到现在还是有争议的,所谓C++之父云:“我创造了这门语言,可我还没有完全掌握它”
2.容易混淆
如果调用基类的基类中的方法,容易造成歧义
3.无用处
一般的Java都是一个继承完事,碰到相对复杂的也是使用大量的接口而不是多继承
所以C++的多继承实际不靠谱!
只不过画蛇添足而饮酒晚矣! -
java 一个接口可以继承多个接口吗
2018-06-19 14:36:33Interface3 Extends Interface0, Interface1, interface……不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?但接口不存在这样的问题,接口全都是抽象方法继承....接口是常量值和方法定义的集合。接口是一种特殊的抽象类。
java类是单继承的。classB Extends classA
java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……
不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
注意:
1)一个类如果实现了一个接口,则要实现该接口的所有方法。
2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。
3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。
以上内容转自:http://blog.csdn.net/tiantiandjava/article/details/46514783
end
-----------------------------------------------------------------------------------------------------
注:作者 望穿秋水见伊人
-
Object-C的类可以多重继承吗?可以实现多个接口吗?...重写一个类的方式用继承好还是分类好,为什么?...
2018-11-21 16:37:00答:Object-c的类不可以多重继承,可以实现多个接口(协议),Category是类别,重写一个类的方式一般用分类更好,仅仅对分类有效,不会影响到其他类与原有类的关系。category的主要作用是为已经存在的类添加方法.除... -
java一个接口可以继承另外一个接口吗
2019-07-24 16:40:11一个类可以实现多个接口: class D implements A,B,C{} 但是一个类只能继承一个类,不能继承多个类 class B extends A{} 在继承类的同时,也可以继承接口: class E extends D implements A,B,C{} 这也正是选择用接口而... -
java中的类可以有多个直接父类_一个java类可以有多个父类吗?
2021-02-26 21:02:03一个java类不可以有多个父类,只可以有1个父类。Java类只支持单继承,不支持多继承,所以只可以有...Java中父类的意思是:某一个类B继承了类A则说A是B的父类。继承后B拥有A所有的公开方法和属性。Java是一门面向对象... -
接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承
2021-01-28 04:22:15一、接口类(面向对象开发的思想和规范)的多...其他两个tiger类和hawk类则不能满足(b)而以下代码确切定义每一个类,每个类的属性都都在类里面存在,这样写虽然可以满足前面的需求,但是不好的地方就是,重复的方法... -
java抽象类可以被继承吗_java抽象类可以被继承吗?
2021-03-06 06:39:35Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行... -
java接口可以继承多个接口吗_java接口可以继承多个接口
2021-02-12 11:38:59Interface3 Extends Interface0, Interface1, interface……不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?但接口不存在这样的问题,接口全都是抽象方法继承.... -
一个类可以实现多个接口吗_java中接口的概念
2020-12-02 15:39:41如果一个类之中只是由抽象方法和全局常量所组成的,那么在这种情况下不会将其定义为一个抽象类,而只会将其定义为接口,所以所谓的接口严格来讲就属于一个特殊的类,而且这个类里面只有抽象方法与全局常量。... -
python类不支持多继承对吗_Python接口类的多继承以及抽象类的单继承
2021-01-14 20:47:31一、接口类(面向对象开发的思想和规范)的多...其他两个tiger类和hawk类则不能满足(b)而以下代码确切定义每一个类,每个类的属性都都在类里面存在,这样写虽然可以满足前面的需求,但是不好的地方就是,重复的方法... -
父类可以调用子类的方法吗_python类的继承、多继承及查找方法顺序
2020-12-10 00:04:49不想继承父类的某个方法,就自己重写一个一样名称的方法执行父类中方法:1--> super(子类, self).父类方法(参数) # 标识明确,比较常用;2--> 父类名.父类方法(self, 参数)2、多继承(无__... -
java中一个接口可以继承几个接口吗
2019-09-20 14:15:31一个类可以实现多个接口:class D implements A,B,C{}。但是一个类只能继承一个类,不能继承多个类:class B extends A{}。在继承类的同时,也可以继承接口:class E extends D implements A,B,C{}。 接口的使用原则... -
匿名内部类继承类的同时可以实现接口吗?
2017-01-06 09:53:04一个匿名内部类一定是继承一个类或者实现一个接口,new了这个父类或接口名的内部类还带内容,我就想问能不能还能不能继承其他类或实现其他接口。 如果我表达不好,不好理解, 那问题简化就是 匿名内部类能不能... -
String类可以被继承吗?我们来聊聊final关键字!
2018-08-28 20:44:01String类可以被继承吗?我们来聊聊final关键字! String在java基础知识中绝对是个重点知识,关于String的一些问题也是非常的多,而且牵涉到内存等高级知识,在面试中也是经常被考察的一个点,那么我们今天就来... -
一个类可以实现多个接口吗_Java入门:基础知识(面向对象:接口)
2020-12-06 06:44:25接着上一篇的基础知识,今天俺们来学习一下:面向对象(万物皆对象)三大特征(封装、继承、多态)接口接口 概述:接口是一种引用数据类型,是方法的'集合',接口的内部主要是定义方法,包含常量、抽象方法(JDK7及以前)... -
interface可以多继承吗
2019-02-26 10:54:43几天前被一个面试官虐成狗,上来问住我的第一个问题是,interface1 extends ...java明明说好的不支持多继承,class可以通过implement多个Interface来间接实现多继承,但是Interface怎么implements多个接口呢。这是个... -
Object-C支持多继承吗?可以实现多个接口吗?Category是什么?
2014-02-15 18:21:00重写一个类的方式是继承好还是分类好?为什么? Object-C不支持多继承。我们可以通过ios中无处不在的@protocol委托方式来实现。协议是多个类共享的一个方法列表,在协议中所列出的方法没有响应的实现,由... -
Java 接口是否可以继承多个接口?
2020-06-11 12:00:51Java 接口是否可以继承多个接口? 我们都知道,Java类是单继承,那接口可以多继承吗? 答案是:Java 接口是可以继承多个接口的 Java不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何... -
python构造函数可以有多个吗_python中的多个构造函数,使用继承
2020-12-17 10:01:55一个类中不能有两个构造函数.构造函数必须命名为__init__.并且,与Java不同,Python不允许通过其参数类型重载函数或方法.所以,如果你有两个构造函数,它们都是相同的函数.有几种方法可以解决这个问题.使用@classmethods... -
python私有属性可以被子类继承吗_Python中私有和受保护方法的继承
2020-11-30 12:45:25慕后森Python没有隐私模型,没有像C ++,C#或Java这样的访问修饰符。没有真正的“受保护”或“私有”属性。带有前导双下划线但无尾随双下划线的名称将被重编,...通过在此类名称前添加一个额外的下划线和类名称(无... -
java如何运行一个继承了不同包下类的.class文件。
2021-02-18 14:08:46第一个类是base.Base,存在./path1/base/路径下,第二个类是sub.Sub,存放在./path2/sub/路径下,Sub继承了Base。源代码如下: <code class="language-java">package base; public ...