Tag: inheritance

Java中的默认构造函数和inheritance

我有一个关于Java中的默认构造函数和inheritance的问题。 一般来说,如果你编写一个类而不包含任何构造函数,Java会自动为你提供一个默认的构造函数(一个没有参数),它初始化了类的所有实例variables(如果有的话)和一些默认值(0,null ,或者错误)。 但是,如果你编写了一个构造函数,并且有一些参数,并且你不写任何默认的构造函数,那么Java就不会提供默认的构造函数。 我的问题是:什么是类的情况下,从其他类inheritance – 如果我写一个构造函数的一些参数,但不包括默认的构造函数,他们是否inheritance了超类的默认构造函数?

如何将inheritance策略与JPA注释和Hibernate混合?

根据Hibernate参考文档 ,在使用Hibernate的XML-Metadata时,应该可以混合使用不同的inheritance映射策略: http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html#inheritance-mixing-tableperclass-tablepersubclass 但是,“ Hibernate注解参考指南”的相应部分并不包括: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#d0e1168 另一方面,JavaDocsbuild议混合inheritance策略应该是可能的。 例如在javax.persistence.DiscriminatorColumn中它说: 策略和鉴别器列仅在应用不同inheritance策略的实体类层次结构或子层次结构的根目录中指定。 以下是我试图实现的映射的一个示例。 我想在层次结构的根目录附近使用table-per-subclass映射,但是在树叶附近改变为table-per-class-hierarchy映射。 以下是一些示例代码: @Entity @Inheritance( strategy = InheritanceType.JOINED ) public abstract class A implements Serializable { @Id private String id; // other mapped properties… } @Entity @Inheritance( strategy = InheritanceType.SINGLE_TABLE ) public class BB extends A { // other mapped properties and associations… } @Entity public […]

赞成inheritance遗产

喜欢inheritance的构成 是非常stream行的词组。 我读了几篇文章,最后每篇文章都说 当类之间存在纯粹的IS-A关系时使用inheritance。 这篇文章的一个例子: 这里苹果和水果之间有明确的IS-A关系,即苹果IS-A水果,但作者也表明,苹果HAS-A水果(成分),以显示inheritance实施时的陷阱。 我在这里变得有些困惑,这个陈述的含义是什么 当类之间存在纯粹的IS-A关系时使用inheritance。 使用构成而不是inheritance是否意味着即使存在纯粹的IS-A关系,也总是尝试应用构图,而仅仅在构图没有意义的情况下才留下inheritance?

用C ++重写基类的重载函数

可能重复: C ++重载parsing 我遇到了一个问题,在我的课程覆盖了它的基类的一个函数之后,所有重载版本的函数都被隐藏了。 这是由devise还是我只是做错了什么? 防爆。 class foo { public: foo(void); ~foo(void); virtual void a(int); virtual void a(double); }; class bar : public foo { public: bar(void); ~bar(void); void a(int); }; 那么下面会给出一个编译错误,说bar中没有(double)函数。 main() { double i = 0.0; bar b; ba(i); }

inheritance共享方法名称的接口

有两个基类具有相同的函数名称。 我想inheritance他们两个,并以不同的方式骑在每个方法。 我怎样才能做到这一点与单独的声明和定义(而不是定义类定义)? #include <cstdio> class Interface1{ public: virtual void Name() = 0; }; class Interface2 { public: virtual void Name() = 0; }; class RealClass: public Interface1, public Interface2 { public: virtual void Interface1::Name() { printf("Interface1 OK?\n"); } virtual void Interface2::Name() { printf("Interface2 OK?\n"); } }; int main() { Interface1 *p = new RealClass(); […]

用初始化列表初始化父保护成员(C ++)

是否有可能使用子类的构造函数的初始化列表初始化在父类中声明为受保护的数据成员? 我无法得到它的工作。 我可以解决这个问题,但是如果我不需要的话,那将会很好。 一些示例代码: class Parent { protected: std::string something; }; class Child : public Parent { private: Child() : something("Hello, World!") { } }; 当我尝试这样做时,编译器告诉我:“class'Child'没有任何名称为”something“的字段。 是这样的可能吗? 如果是这样,语法是什么? 非常感谢!

我如何dynamic地从基类创build派生类

例如,我有一个基类,如下所示: class BaseClass(object): def __init__(self, classtype): self._type = classtype 从这个类我得到几个其他类,例如 class TestClass(BaseClass): def __init__(self): super(TestClass, self).__init__('Test') class SpecialClass(BaseClass): def __init__(self): super(TestClass, self).__init__('Special') 有没有一种很好的pythonic方法来创build这些类dynamic的一个函数调用,把新类放入我的当前范围,如: foo(BaseClass, "My") a = MyClass() … 因为会有评论和问题,为什么我需要这样的:派生类都有完全相同的内部结构与差异,构造函数采取了一些以前未定义的参数。 因此,例如, MyClass将类关键字a作为类TestClass的构造函数接受b和c 。 inst1 = MyClass(a=4) inst2 = MyClass(a=5) inst3 = TestClass(b=False, c = "test") 但是他们绝不应该使用类的types作为input参数 inst1 = BaseClass(classtype = "My", a=4) 我得到这个工作,但宁愿其他的方式,即dynamic创build类对象。

重载和重载

超载和重写有什么区别。

“覆盖”关键字只是检查重写的虚拟方法吗?

据我所知,在C ++ 11中引入override关键字只不过是一个检查,以确保正在实现的function是在基类中的virtual函数的override 。 是吗?

Ruby:kind_of? 与instance_of? 与is_a?

有什么不同? 我应该什么时候使用哪个? 为什么有这么多呢?