精华内容
下载资源
问答
  • java中定义一个可以同时继承两个类  分享| 2013-09-18 17:12yfjmhe | 浏览 19117 次  继承 这句话对还是错?为什么? 专业回答 DM19890110 2013-09-18 17:58 这句话要看怎么理解...

    java中定义一个类可以同时继承两个类

    2013-09-18 17:12 yfjmhe  |  浏览 19117 次
      继承
    这句话对还是错?为什么?
    专业回答
    2013-09-18 17:58
    这句话要看怎么理解去了,一个类不能直接继承两个类比如说这样:
    class A extends B,C
    不能这样写,因为java不支持多继承,
    但是你可以像下面这样实现继承多个类
    class A extends B
    class C extends A
    这样C就同时继承了B和A两个类

    为您推荐:

    2013-09-18 18:48 yb183939718  | 三级
    错误的
    java类是单继承的 不可以同时继承 但是可以多重继承 比如3个类 A,B,C 
    如果C想继承A和B 不可以写 c extends A,B
    但是可以间接继承 如: A extends B 然后 C extends A 这样C 就相当于继承了A ,B
    评论  |  7  0
    2013-09-18 17:23 kevintop3  | 八级
    1
    2
    3
    答案:错误。 
     
    原因:Java不支持多重继承,一个类只能有一个父类,即一个类只能继承一个类,但可以实现多个接口。
    评论  |  7  0
    2013-09-18 17:14 miws_  | 九级
    java不支持多重继承,也就是不能同时继承两个类,但可以实现多个接口。
    评论  |  0  0
    2013-09-18 17:37 jacky8293676  | 四级
    只能说很明显是错的。。java只能继承一个父类。。你可以这样理解。。一个小孩不可能有两个亲生老爸对不?java里面很多都是拟人化的。。
    评论  |  7  0
    2013-09-18 18:17 sanhgjc  | 四级
    是错的,因为java是单继承,可以用以下两个方法,一、class A extends B
    class C extends A。二、将其中的一个定义为接口
    评论  |  2  0
    2013-09-18 21:14 KerryRuan5  | 二级
    这句话还是有歧义的,看你怎么理解,java是单继承的,不可以写 c extends A,B,可以间接继承 如: A extends B 然后 C extends A ,这样C 就相当于继承了A ,B,也就可以写成 C extends B。一个类可以继承多个接口,如:A implemente B ,C.
    评论  |  1  0
    2013-09-18 17:15 banyan_virus  | 五级
    错,java语言不支持多重继承,但可实现多个接口。
    评论  |  1  0
    2013-09-18 17:14 godandghost  | 六级  最快回答
    错,一个类只能继承一个类,但可以实现若干个接口。
    评论  |  2  0
    2013-09-18 17:24 ysdoc  | 八级
    错的,java是单继承。
    评论  |  1  0
    2013-09-18 17:14 yzysust  | 四级
    不对啊,java里面是单继承的,但可以实现多个接口。
    评论  |  1  0
    2013-09-18 17:26 zhupy112  | 三级
    java不能多继承 但是可以实现多个接口
    评论  |  1  0
    2013-09-18 17:16 cepapa22  | 四级
    错 (此括号内的字是为了凑字数)
    评论  |  1  0
    2013-09-18 17:57 royhglian  | 二级
    java不支持类的多继承,支持多接口
    评论  |  1  0
    2013-09-18 17:14 魔君不真2  | 一级
    错、因为java是单继承
    展开全文
  • class 同时继承两个类

    千次阅读 2017-06-11 15:22:17
    public class A{ } public class B extends C{ } public class C extends B{ C里面不需要写 已经有了A和B的所有内容 }
    public class A{
    

    }

    public class B extends C{


    }

    public class C extends B{

    C里面不需要写 已经有了A类和B类的所有内容

    }



    展开全文
  • java中一个不能直接继承两个类比如说这样: class A extends B,C 不能这样写,因为java不支持多继承, 但是你可以像下面这样实现继承多个 class A extends B class C extends A 这样C就同时继承了B和A两个在...
    java中一个类不能直接继承两个类比如说这样:
    class A extends B,C
    不能这样写,因为java不支持多继承,
    但是你可以像下面这样实现继承多个类
    class A extends B
    class C extends A
    这样C就同时继承了B和A两个类
    在C++看来,这个多继承就好解决多了
    class A{public:virtual void foo(){printf("A")}};
    calss B{public:virtual void foo(){printf("B")}};
    .
    .
    .
    class x:public A,public B,...
    {
        void foo(){printf("X");};
    }

    知乎上对多继承有比较详细的回答:https://www.zhihu.com/question/21476063
    作者:仲晨 链接:https://www.zhihu.com/question/21476063/answer/18351313 来源:知乎 著作权归作者所有,转载请联系作者获得授权。
    多重继承是一件很复杂、很容易产生问题的功能。它跟Goto语句一样,利弊交织。 以下分两部分叙述,第一部分是Python多重继承遇到的麻烦,第二部分是Java和Ruby如何折中多重继承需求。 ============================================  第一部分: Python是支持多重继承的,但为了解决多重继承的方法查找顺序问题(被称为MRO),有一场苦难史:  1. 传统模式 直接使用深度优先算法(并且,从左向右),每个类选择其第一次出现的位置。比如
    class A:
      def save(self): pass
    class B(A): pass
    class C:
      def save(self): pass
    class D(B, C): pass
    
    作为D类的一个实例,它的成员寻找顺序是:D、B、A、C。
    但当碰到如下这样一个“ 菱形继承”就麻烦了:
    1. class A :
    2. def save ( self ): pass
    3. class B ( A ): pass
    4. class C ( A ):
    5. def save ( self ): pass
    6. class D ( B , C ): pass
    作为D类的一个实例,寻找顺序也是D、B、A、C,但调用其save方法时,到底是调用A中的呢?还是C中的呢?直观上看,应该是C。这里有产生矛盾了。
    2. Python2.2的new-style class模式
    Python2.2中引进了new-style class,说白了就像java一样,所有类都继承自最根本的object类。
    这就让“菱形继承”变成十分普遍,于是只能改变MRO策略。
    仍然 使用深度优先搜索、从左向右,但是每个类选择其最后一次出现的位置。
    这样一来,对上面的“菱形继承”就处理比较完美了,形成的顺序是:D、B、C、A,越是公用基础类,越放在后面。
    但是,碰到 交叉继承,就又懵了。
    <img src="https://pic4.zhimg.com/d067bccb353065c3276a96f6aab93a77_b.jpg" data-rawwidth="113" data-rawheight="179" class="content_image" width="113">这里,X和Y都继承自O,A继承(X,Y)(注意,有先后顺序),B继承(Y,X),再有个最下面的类继承(A,B)。 这里,X和Y都继承自O,A继承(X,Y)(注意,有先后顺序),B继承(Y,X),再有个最下面的类继承(A,B)。
    按照上述算法出来的结果是:?、A、B、Y、X、O。这就有些奇怪了,明明A在B前,A继承的X在Y前,可为啥X的优先级比Y要低呢?
    3. C3算法
    1996年,一帮牛人写了一篇文章 A monotonic superclass linearization for Dylan,提供了一个基于层级计算的线性MRO算法,被称为C3,整体上比较合理了。(算法不详说了)
    在2012年被加入了Dylan语言,2007年加入了Python2.3,此外还有Perl 6、Parrot等语言之中。
    这样虽说基本解决了计算问题,但多重继承本身就有很多让人疑惑的地方,比如:
    <img src="https://pic4.zhimg.com/c1e6e9a3a1df789b9686582a9367326b_b.jpg" data-rawwidth="251" data-rawheight="171" class="content_image" width="251">参考文献: 参考文献:
    python-history.blogspot.jp
    The Python 2.3 Method Resolution Order
    ============================================
    第二部分:
    多重继承那么复杂,可单一继承又那么拘束,咋办呢?
    1. 接口继承
    Java就是那么做的,只允许单一继承类(方法的实现),但可以继承多个接口(方法的定义)。
    Java的接口继承功能,既实现了静态语言的多重继承性,又避免了多重继承的数据构造的冲突和类层次的复杂性。
    但是, 我们并不能说接口是解决问题的完美方案。接口也有不能共享实现的缺点。
    本来只是为了跨越继承层次来共享代码,现在却需要另外生成一个独立对象,而且每次方法调用都要委派给这个对象,这实在是不太合理,而且执行的效率也不高。
    ——《松本行弘的程序世界》
    2. Mix-in
    这是Ruby所推崇的,最初在Lisp中开始使用。规则如下:
    1. 通常的继承都是单一继承。
    2. 第二个以及两个以上的父类必须是Mix-in的抽象类(即不能单独生成实例,不能继承普通类)。
    这种规则下,既能够保持单一继承的结构,又能用Mix-in来共享方法的实现。
    展开全文
  • Python同时继承父类有种方法 1.使用未绑定方法逐个调用 2.使用super()函数。注意,这里有特别要注意的地方,当子类继承于多父类时,super() 函数只可用于调用第一父类的构造函数,其余父类的构造函数...

    Python同时继承多个父类有两种方法

    1.使用未绑定方法逐个调用
    2.使用super()函数。注意,这里有个特别要注意的地方,当子类继承于多个父类时,super() 函数只可用于调用第一个父类的构造函数,其余父类的构造函数只能使用未绑定的方式调用
    class Employee:
        def __init__(self,salary):
            self.salary=salary
        def work(self, *args, **kwargs):
            print('普通员工在写代码,工资为:',self.salary)
    
    class Customer:
        def __init__(self,favourite,address):
            self.favourite=favourite
            self.address=address
        def info (self):
            print('我是一个顾客,我的爱好是:%s,地址是%s'%(self.favourite,self.address))
    
    class Mannager(Employee,Customer):
        def __init__(self,salary,favourite,address):
            print('Manngaer的构造方法')
            # 方法一:用未绑定方法来构造,使用类名直接构造,逐个调用
            # Employee.__init__(self,salary)
            # Customer.__init__(self,favourite,address)
            
    
            # 方法二:使用super()和未绑定方法
            super().__init__(salary)
            #与上一行代码效果相同
            # super(Mannager,self).__init__(salary)
            Customer.__init__(self,favourite,address)
    m=Mannager(25000,'it产品','广州')
    m.work()
    m.info()
    
    展开全文
  • java中一个不能直接继承两个类比如说这样: class A extends B,C 不能这样写,因为java不支持多继承, 但是你可以像下面这样实现继承多个 class A extends B class C extends A 这样C就同时继承了B和A两个
  • C#-同时继承个类

    万次阅读 2018-12-07 16:14:50
    面试题: using UnityEngine; public class Test : MonoBehaviour { // Use this for initialization void Start() ... IMyInterface my1 = new MyClass1();... IMyInterface my2 = new MyCl...
  • python同时继承个类且方法相同

    千次阅读 2020-02-22 10:57:13
    只有一句话,那就是python创建的时候,类名后面的括号里头跟的是父类,可以跟多个,如果调用的父类的方法不一样,那就是调用特定的某个父类的方法,如果调用的父类方法在两个父类里头都有,遵循先来后到原则。...
  • 8、通过继承Thread的方式创建两个线程,在Thread构造方法中指定线程的名字,并将这两个线程的名字打印出来。 public class MyThread extends Thread{ public MyThread(String name) { super(name); } public ...
  • 设计一个抽象图形,在该中包含有至少两个抽象方法求周长和求面积,分别定义圆形、长方形、正方形继承图形,并实现上述两个方法。并创建实例验证。 直接上代码了 package ThirdDay; abstract class...
  • //一子类可以同时继承抽象和实现接口 //接口 interface A{ public static final String FLAG="天河学院"; public abstract void print(); public abstract String getInfo(); } //抽象 ...
  • JS继承方式有很多,主要分ES5和ES6继承的实现 先说一下ES5是如何实现继承的 ES5实现继承主要是基于prototype来实现的,具体有三种方式 一是原型链继承:即B.prototype-new A() 二是借用构造函数(call 或者 apply 的...
  • 习题 11.9 分别定义Teacher(教师)和Cadre(干部),采用多重继承方式由这两个类派生出新Teacher_Cadre(教师兼干部)。 1. 在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 2. 在Teacher中...
  • 而抽象在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象的一典型应用,假设某个项目的所有Servlet都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一...
  • 添加额外两个属性:班级class、学号sno。 添加方法:打印学生的所有信息print_info方法。 创建教师Teacher,继承自SchoolPerson, 添加额外两个属性:部门department、工号cno。 添加方法:打印教师的所有信息...
  • 通过继承 Thread 的方式创建两个线程,在 Thread 构造方法中指定线程的名字,并将这两个线程的名字打印出来。 public class MyThread extends Thread { public MyThread(String name) { super(name); } ...
  • 【题目】(教材P394习题9)分别定义Teacher(教师)和Cadre(干部),采用多重继承方式由这两个类派生出新Teacher_Cadre(教师兼干部)。要求: (1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据...
  • Java之继承泛型

    千次阅读 2019-07-08 11:43:26
    1、定义一泛型Parent<T>, 注意:定义:泛型T,使用:实际类型 2、子类继承调用。Son定义时有种方式初始化父类型的类型参数: 法1:用子类中的泛型类型初始化父类: public class Son<T> ...
  • 第一种方式:继承Thread 步骤:1、定义类继承Thread 2、覆写Thread的run方法。...该线程有两个作用:启动线程,调用run方法。 代码示例: class Test extends Thread { //private String name; Te...
  • C++类继承

    千次阅读 2018-10-21 22:18:34
    文章目录C++类继承1.is-a继承1.1公有继承1.2私有继承1.3保护继承2.has-a关系3.多态公有继承3.1特性:3.2虚函数实现原理4.纯虚函数和抽象基类5.多继承、多重继承和虚拟继承6.模板 1.is-a继承 1.1公有继承 特性: //...
  • 【C++】C++继承和派生、虚基类

    千次阅读 多人点赞 2018-06-07 18:46:17
    派生则是继承的直接产物,它通过继承已有的一或多个类来产生一新的,通过派生可以创建一种类族。 继承 基本概念 在定义一个类A时,若它使用了一已定义B的部分或全部成员,则称A继承...
  •  Teacher的数据成员中还有之职称job、工资salary,Leader的数据成员还有职务duty,却这两个类都有输出自己信息的成员函数show。 c. 在中声明成员函数,在外实现 d. 使用虚基类来避免继承中的二义性。
  • 面向对象的优势在于的复用,继承与多态都是对进行复用,继承级别的复用,多态是方法级别的复用。提到继承就必须提到的组合,继承和组合有何异同?PHP到底有没有多态?这些将在下面进行讲述。 1. ...
  • es6 javascript的Class 继承

    千次阅读 2016-12-09 18:28:13
    1 基本用法Class 之间可以通过extends关键字实现继承, 这比 ES5 的通过修改原型链实现继承, 要清晰和方便很多。... 但是由于没有部署任何代码, 所以这两个类完全一样, 等于复制了一个Point。 下面, 我...
  • 2. 抽象类继承,如果子类也是一抽象,并不要求一定重写父类方法。如果子类不是抽象,则要求子类一定要实现父类中的抽象方法。3. 接口类继承。如果是一子接口,可以扩展父接口的方法;如果是一个子抽象,...
  • /* (程序头部注释开始) * 程序的版权和版本声明部分 ... * All rights reserved. * 文件名称:第十二周任务二 分别定义Teacher(教师)和Cadre...采用多重继承方式由这两个类派生出新Teacher_Cadre(教师兼干部)
  • c++的不同继承方式

    千次阅读 2017-12-23 15:53:50
    c++对一个继承而来的成员的访问权限受两个因素影响:   (1) 该成员在基类中的访问权限说明符   (2) 派生继承方式  需要注意,上述是站在一个派生的使用者(包括继承该派生的新派生)而言的。所站...
  • 在java中 一个类中不能继承接口,但是可以通过一接口继承接口来实现。具体代码如下public interface LanguageBeharvior { public void language(); }public interface SpeakBeharvior { public void ...
  • 目前本猿主要做的是接口开发,现在需要将接口提供方的一个类中的部分字段挪到我自己的项目来,然而奈何本猿太懒,不想一set、get…… 要不然说“懒”是促进社会科技进步的最大动力呢!!!鉴于这一情况,本...
  • Python中继承、多层继承和多继承 ...继承的语法为在类名后的小括号()中写入要继承的父类名,如果要继承个类则中间用逗号分隔。 class Electrical(object): def __init__(self, name): self....
  • C++中的多继承

    万次阅读 多人点赞 2015-07-19 23:07:43
    在写这一主题的文章之前,在网上找到一篇很非常好的文章...C会同时拥有A和B的特性(属性和方法,也就是两个类的所有成员)。这种方式很简单这里就不多说,主要讲下面这种方式。2. 复杂版本 同样的,这个结构中

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,456,982
精华内容 582,792
关键字:

同时继承两个类