Questions tagged «inheritance»

继承是面向对象编程中的系统,该系统允许对象支持由先前类型定义的操作,而不必提供自己的定义。它是面向对象编程中多态性的主要载体。


3
Swift枚举继承
您可以在Swift中继承枚举吗?关于枚举继承,应注意哪些规则? 以下测试代码: enum TemperatureUnit: Int { case Kelvin, Celcius, Farenheit } enum TemperatureSubunit : Temperature { } 产生 error: type 'TemperatureSubunit' does not conform to protocol 'RawRepresentable'

2
从C#的基类中,获取派生类型?
假设我们有以下两个类: public class Derived : Base { public Derived(string s) : base(s) { } } public class Base { protected Base(string s) { } } 我怎样才能从内部的构造函数中找出Base那Derived是调用?这是我想出的: public class Derived : Base { public Derived(string s) : base(typeof(Derived), s) { } } public class Base { protected Base(Type type, string s) …

5
为什么此多态C#代码打印出它的功能?
最近,为我提供了以下代码,作为一种难题,以帮助理解OOP-C#中的多态性和继承。 // No compiling! public class A { public virtual string GetName() { return "A"; } } public class B:A { public override string GetName() { return "B"; } } public class C:B { public new string GetName() { return "C"; } } void Main() { A instance = new …


8
在Backbone中访问父类
我需要initialize从继承的MyModel-class内部调用父类的方法,而不是像我今天所做的那样完全覆盖它。 我该怎么办? 这是我的代码现在的外观: BaseModel = Backbone.Model.extend({ initialize: function(attributes, options) { // Do parent stuff stuff } }); MyModel = BaseModel.extend({ initialize: function() { // Invoke BaseModel.initialize(); // Continue doing specific stuff for this child-class. }, });

4
扩展React.js组件
关于Backbone.js,我最欣赏的事情之一就是简单而优雅的继承是如何工作的。我开始着手处理React,并且在React中无法真正找到类似于此Backbone代码的任何内容 var Vehicle = Backbone.View.extend({ methodA: function() { // ... } methodB: function() { // ... } methodC: function() { // ... } }); var Airplane = Vehicle.extend({ methodC: function() { // Overwrite methodC from super } }); 在react中,我们有mixin,如果使用mixin,我们可以像上面的例子那样 var vehicleMethods = { methodA: function() { // ... } methodB: …

2
案例类继承的“错”是什么问题?
在寻找其他东西时,我完全出于偶然,偶然发现了几句有关恶性案例类继承的评论。有一个叫做的东西ProductN,可怜的人,国王,精灵和巫师,以及案例类继承如何丢失了某种非常理想的属性。那么,案例类继承有什么问题呢?

5
子类中__slots__的继承实际上如何工作?
在插槽上的Python数据模型参考部分中,有关于使用的注释列表__slots__。我对第一项和第六项感到完全困惑,因为它们似乎相互矛盾。 第一项: 从没有的类继承时,该类 __slots__的__dict__属性将始终可访问,因此__slots__ 子类中的定义是没有意义的。 第六项: __slots__ 声明的动作仅限于定义它的类。结果,子类将具有一个,__dict__ 除非它们也定义__slots__ (该子类只能包含任何其他插槽的名称)。 在我看来,这些项目的措词可能更好,也可以通过代码显示,但我一直在努力解决这个问题,但仍然感到困惑。我不明白怎么__slots__都应该被使用,而我试图让他们的工作更好地把握。 问题: 有人可以用通俗易懂的语言向我解释子类继承时继承插槽的条件是什么? (简单的代码示例会有所帮助,但不是必需的。)

10
在子类中覆盖equals()和hashCode()……考虑到超级字段
关于如何考虑超字段的子类中的Override equals()&hashCode()in,是否有特定规则?知道有很多参数:超字段是private / public,有/没有getter ... 例如,Netbeans生成的equals()和hashCode()不会考虑超级字段...和 new HomoSapiens("M", "80", "1.80", "Cammeron", "VeryHot").equals( new HomoSapiens("F", "50", "1.50", "Cammeron", "VeryHot")) 将返回true :( public class Hominidae { public String gender; public String weight; public String height; public Hominidae(String gender, String weight, String height) { this.gender = gender; this.weight = weight; this.height = height; …

1
默认方法会在一段时间内返回true,然后返回false?(可能的JVM错误)
我的以下代码有问题,我隔离为最封闭的形式,我使用的是Java 8,该代码几乎可以启动了(2014年3月18日),因此我预计实现本身不会出现严重问题,因此可能/必须是我自己的代码: 注意:该代码是用Java 8编写的,它具有各种新功能,包括default接口中的方法实现。 public abstract class Drawable implements DrawableInterface { } interface DrawableInterface { default public boolean isShadowReceiver() { return false; } default public boolean isShadowCaster() { return false; } } public interface ShadowDrawable extends DrawableInterface { @Override default public boolean isShadowReceiver() { return true; } @Override default public …

7
将'typedef'从基础类传播到'模板'的派生类
我试图定义只包含typedef的基类。 template<typename T> class A { public: typedef std::vector<T> Vec_t; }; template<typename T> class B : public A<T> { private: Vec_t v; // fails - Vec_t is not recognized }; 为什么在BI中收到无法识别Vec_t的错误,我需要显式地编写它? typename A<T>::Vec_t v;

2
复制构造函数中的C ++名称空间冲突
我有以下代码: namespace A { struct Foo { int a; }; } struct Foo { int b; }; struct Bar : public A::Foo { Bar(Foo foo) { c = foo.b; } int c; }; C ++编译器抱怨“ c = foo.b”,因为A :: Foo没有名为b的成员。如果我用:: Foo更改Bar参数的类型,它将起作用。 我的问题是此行为背后的原因是什么(我想这与继承使Bar进入A名称空间这一事实有关,但是我找不到任何文档来支持该理论。

1
为什么C ++中类的大小取决于数据成员的公共/私有状态?
据我所知,C ++中类的大小取决于以下因素: 所有非静态数据成员的大小。 数据成员的顺序。 是否启用字节填充。 其直接基类的大小。 虚拟功能的存在。 继承方式(虚拟继承)。 现在,我创建了两个类,如下所示: class A{ int a; short s; int b; char d; };// kept a char at last on purpose to leave a "hole" class B : public A{ char c; }; 现在检查A和BI的大小,请参见 A的大小:16 B的大小:16 我的假设是B类中的字符c容纳在A类中剩余的“空洞”中。 但是,令我感到困惑的是以下情况,其中我将成员公开 class A{ public: int a; short …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.