标签: multiple-inheritance

使用泛型类型java扩展类

我正在尝试在java中执行以下操作:

public class ClassName<E> extends E
Run Code Online (Sandbox Code Playgroud)

不过这样做,我得到了:

error: unexpected type
Run Code Online (Sandbox Code Playgroud)

是不是就是这样,java不能这样做? - 如果是的话,我将如何实现这种效果?它在C++中完美运行,使用模板,类似:

template<typename E>
class ClassName: public E
Run Code Online (Sandbox Code Playgroud)

我真正想要实现的是能够以这种方式将类链接在一起,以实现java中多重继承的效果.

java generics inheritance templates multiple-inheritance

1
推荐指数
1
解决办法
1243
查看次数

用于多表继承实体的Doctrine DQL实例

我在我的应用程序上设置了Doctrine多表继承 - 见下文

/**
 * @Entity
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="type", type="string")
 * @DiscriminatorMap({
 *  "news" = "News" ,
 *  "press_release" = "PressRelease"})
 *
 * @table(name="pages")
 */
class PressRelease extends Page {...}
class News extends Page {...} 
Run Code Online (Sandbox Code Playgroud)

我的自定义存储库查询

$query = $this->getEntityManager()->createQuery('SELECT u FROM MyStoreBundle:User u
LEFT JOIN u.page p
WHERE p INSTANCE OF :newsType'
)->setParameter('newsType', new News());
Run Code Online (Sandbox Code Playgroud)

我认为这会工作,但我不断收到以下错误:

Notice: Undefined index: id in /path/to/Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php line 282
Run Code Online (Sandbox Code Playgroud)

显然我的News实体没有一个id字段,因为这是在扩展Page具有id定义属性的类时继承的,有谁知道我做错了什么?

提前致谢

multiple-inheritance dql doctrine-orm

1
推荐指数
1
解决办法
2410
查看次数

Golang:当你有多个继承权时,接口的重点是什么

我是一名Java程序员,学习在Go中编程.到目前为止,我非常喜欢这种语言.比Java更多.

但有一件事我有点困惑.Java具有接口,因为类只能从一个类继承.由于Go允许多重继承,接口的重点是什么?

java inheritance interface multiple-inheritance go

1
推荐指数
2
解决办法
7589
查看次数

用于多级继承的Objective C [self init]层次结构

我有A类继承了B类.并希望实现类似下面的东西.但是由于动态类型转换,init方法会得到递归调用.有没有办法实现这样的?有什么建议吗?(不改变子类中'init的名字?

@interface A : NSObject
@property NSData * data;
@end
Run Code Online (Sandbox Code Playgroud)
@implementation A

- (id) init {
    self = [super init];
    /* want to do some default initialization here  
       for this class and all of its subclasses. */
    // ... ... 
    return self;
}

/* This [self init] get recursed. 
   But how can I force this class and all of its subclass to call [self init] above, 
   not to call the subclass's init method. */

- (id) initWithData:(NSData *)d {
    self …
Run Code Online (Sandbox Code Playgroud)

inheritance dynamic objective-c multiple-inheritance ios

1
推荐指数
1
解决办法
1433
查看次数

在PHP中模拟多重继承

假设我有2个班级

Class A {
    public function doA(){
        echo "Im A";
    }
}
Class B {
    public function doB(){
        echo "Im B";
    }
}
Run Code Online (Sandbox Code Playgroud)

编写C类,以便运行以下代码:

  $c = new C();
  $c->doA();
  $c->doB();
Run Code Online (Sandbox Code Playgroud)

和输出:

>> Im A
>> Im B
Run Code Online (Sandbox Code Playgroud)

这是一个测试,其中的条件:

  • 不使用静态调用
  • 你不能修改A类或B类

所以我写道:

Class C {

       public function doA() {
             $a = new A();
             $a->doA();
       }

       public function doB() {
             $b = new B();
             $b->doB();
       }

  }
Run Code Online (Sandbox Code Playgroud)

显然我错了,因为它可以"更优化"

谁能告诉我怎么做?

php multiple-inheritance

1
推荐指数
1
解决办法
307
查看次数

指定函数参数的类型*和*接口

我有一个类的结构,我想应用一些奇怪的约束:

public abstract class TopClass {}

public class ClassA : Topclass {}
public class ClassB : Topclass {}
public class ClassC : Topclass {}
public class ClassD : Topclass {}
public class ClassE : Topclass {}
Run Code Online (Sandbox Code Playgroud)

我想将这些分为几类,其中一些重叠,所以我可以在使用时要求这种组合TopClass.由于C#不支持多重继承,我一直在尝试使用接口:

public abstract class TopClass {}

public interface IGroupA {}
public interface IGroupB {}

public class ClassA : Topclass, IGroupA          {}
public class ClassB : Topclass, IGroupA          {}
public class ClassC : Topclass, IGroupA, IGroupB {}
public class ClassD : Topclass, IGroupB …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism types interface multiple-inheritance

1
推荐指数
1
解决办法
50
查看次数

继承错误的构造函数调用

我正在实施这个钻石继承:

class Object {
private:
    int id; string name;
public:
    Object(){};
    Object(int i, string n){name = n; id = i;};
};


class Button: virtual public Object {
private: 
    string type1;
    int x_coord, y_coord;
public:
    Button():Object(){};
    Button(int i, string n, string ty, int x, int y):Object(i, n){
          type = ty;
          x_coord = x;
          y_coord = y;};
};


class Action: virtual public Object {
private:
    string type2;
public:
    Action():Object(){};
    Action(int i, string n, string t):Object(i, n){ type2 = t;};
};


class ActionButton: …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance class multiple-inheritance c++11

1
推荐指数
1
解决办法
89
查看次数

Java中的每个子类都继承自两个类(Object及其超类)?

当我创建一个新类时,它就是

ClassA extends Object{
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我要从ClassB继承ClassA,那就不是了

ClassA extends Object extends ClassB {
}
Run Code Online (Sandbox Code Playgroud)

这基本上是Java中不允许的多重继承.

或者对于Object类是否有一个特殊的例外,这意味着确实可以安全地说,Java中的每个基类都只从2个类继承

java oop inheritance multiple-inheritance

1
推荐指数
1
解决办法
485
查看次数

被简单的C++多继承示例所困扰

我一直在查看C++核心指南项目C.129并复制粘贴了一个多继承示例,但无法弄清楚为什么MS编译器和CLang都会向我显示相同的错误...它必须非常简单!

代码:

    class Shape { // pure interface
    public:
        virtual void draw() = 0;
    };
    class Circle : public Shape { // pure interface
    public:
        virtual int radius() = 0;
    };

    class Shape_Impl : public Shape {
    public:
        void draw() override {}
    };
    class Circle_Impl : public Shape_Impl, public Circle {
    public:
        int radius() override { return 42; }
    };

    int main()
    {
        Circle_Impl* ic = new Circle_Impl();
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

为什么Circle_Impl在"Circle_Impl"错误中使用"未实现的纯虚方法'绘制' 实例化失败?" 还没有draw实现在被定义 …

c++ inheritance multiple-inheritance

1
推荐指数
1
解决办法
109
查看次数

为多个类创建调用函数

这样我就可以使用我的代码了,但是有两行让我搞砸了,而且不太确定该放什么。

代码(标有两行):

class Person(object):
    numPerson = 0
    def __init__(self,firstName,lastName):
        self.firstName = firstName
        self.lastName = lastName
    def fullName(self):
        print self.firstName +' '+self.lastName

class Employee(Person):
    numEmployee = 0
    def __init__(self,firstName,lastName,pay,employID):
        Person.__init__(self, firstName, lastName)
        self.pay = pay
        self.employID = employID
        Employee.numEmployee += 1

class Programmer(Employee):
    def __init__(self,firstName,lastName,pay,employID,proLang):
        self.proLang = proLang
        Employee.__init__(self, firstName, lastName, pay, employID)

class Manager(Employee):
    def __init__(self,firstName,lastName,pay,employID,progList):
        self.progList = progList
        Employee.__init__(self, firstName, lastName, pay, employID)
    def addProgrammer(self):
        self.progList.append(Programmer.fullName) <------------------- This line
    def removeProgrammer(self):
        if len(self.progList) == 0:
            pass
        else:
            del self.progList[0] …
Run Code Online (Sandbox Code Playgroud)

python class call multiple-inheritance

1
推荐指数
1
解决办法
170
查看次数