Questions tagged «inheritance»

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

10
覆盖Swift中的存储属性
我注意到编译器不会让我用另一个存储的值覆盖存储的属性(这似乎很奇怪): class Jedi { var lightSaberColor = "Blue" } class Sith: Jedi { override var lightSaberColor = "Red" // Cannot override with a stored property lightSaberColor } 但是,我可以使用计算属性来执行此操作: class Jedi { let lightSaberColor = "Blue" } class Sith: Jedi { override var lightSaberColor : String{return "Red"} } 为什么不允许我再给它一个值? 为什么用存储的属性覆盖是可憎的,而用计算的一个犹太洁食呢?他们在想什么呢?

4
JavaScript继承:Object.create与New
在JavaScript中,这两个示例之间有什么区别: 先决条件: function SomeBaseClass(){ } SomeBaseClass.prototype = { doThis : function(){ }, doThat : function(){ } } 使用Object.create的继承示例A: function MyClass(){ } MyClass.prototype = Object.create(SomeBaseClass.prototype); 使用new关键字的继承示例B function MyClass(){ } MyClass.prototype = new SomeBaseClass(); 这两个例子似乎做同样的事情。您何时会选择一个? 另一个问题:考虑下面链接(第15行)中的代码,其中对函数自己的构造函数的引用存储在原型中。为什么这有用? https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js 摘录(如果您不想打开链接): THREE.ImageLoader.prototype = { constructor: THREE.ImageLoader }



3
这是斯巴达,还是?
以下是面试问题。我想出了一个解决方案,但不确定为什么。 题: 在不修改Sparta类的情况下,编写使MakeItReturnFalsereturn的代码false。 public class Sparta : Place { public bool MakeItReturnFalse() { return this is Sparta; } } 我的解决方案:(SPOILER) public class Place { public interface Sparta { } } 但是,为什么Sparta在MakeItReturnFalse()指{namespace}.Place.Sparta代替{namespace}.Sparta?

4
Java中是否有类似注释继承的内容?
我正在探索批注,并得出了一些批注似乎在其中具有层次结构的观点。 我正在使用注释在Cards的后台生成代码。卡的类型不同(因此,代码和注释也不同),但是其中某些特定的元素(例如名称)是相同的。 @Target(value = {ElementType.TYPE}) public @interface Move extends Page{ String method1(); String method2(); } 这就是常见的注释: @Target(value = {ElementType.TYPE}) public @interface Page{ String method3(); } 在上面的示例中,我希望Move可以继承method3,但是会收到一条警告,指出extends对注释无效。我试图使Annotation扩展一个通用的基数,但这是行不通的。那有可能还是仅仅是设计问题?

3
JavaScript中的经典继承与原型继承
我已经在Google上搜索了很多链接,而无法很好地了解经典继承与原型继承之间的区别? 我从这些中学到了一些东西,但是我仍然对这些概念感到困惑。 原型继承相对于经典的好处? http://aaditmshah.github.io/why-prototypal-inheritance-matters/ 古典继承 // Shape - superclass function Shape() { this.x = 0; this.y = 0; } //superclass method Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.info("Shape moved."); }; // Rectangle - subclass function Rectangle() { Shape.call(this); //call super constructor. } //subclass extends superclass …

3
从基类调用时,GetType()是否会返回派生最多的类型?
从基类调用时,GetType()是否会返回派生最多的类型? 例: public abstract class A { private Type GetInfo() { return System.Attribute.GetCustomAttributes(this.GetType()); } } public class B : A { //Fields here have some custom attributes added to them } 还是我应该使派生类必须实现的抽象方法如下所示? public abstract class A { protected abstract Type GetSubType(); private Type GetInfo() { return System.Attribute.GetCustomAttributes(GetSubType()); } } public …

4
从通用基类继承,应用约束并在C#中实现接口
这是一个语法问题。我有一个泛型类,它是从泛型基类继承的,并且将约束应用于类型参数之一。我还希望派生类实现一个接口。对于我的一生,我似乎无法找出正确的语法。 这就是我所拥有的: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... } 我想到的第一件事是: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... } 但这是不正确的,因为这导致T2需要同时实现IBar和IFoo,而不是DerivedFoo来实现IFoo。 我尝试了一些谷歌搜索,冒号,分号等的使用,但是结果却很短。我确定答案很简单。

6
NodeJS中的JavaScript OOP:如何?
我已经习惯了Java中的经典OOP。 使用NodeJS在JavaScript中进行OOP的最佳实践是什么? 每个类都是一个带有module.export?的文件。 如何建立课程? this.Class = function() { //constructor? var privateField = "" this.publicField = "" var privateMethod = function() {} this.publicMethod = function() {} } 与(我什至不确定它是正确的) this.Class = { privateField: "" , privateMethod: function() {} , return { publicField: "" publicMethod: function() {} } } 与 this.Class = function() …



4
Python super()引发TypeError
在Python 2.5中,以下代码引发TypeError: >>> class X: def a(self): print "a" >>> class Y(X): def a(self): super(Y,self).a() print "b" >>> c = Y() >>> c.a() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in a TypeError: super() argument 1 must be type, not classobj 如果我更换class …

2
为什么Java类不从实现的接口继承注释?
我一直在使用Guice的AOP来拦截一些方法调用。我的课程实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使使用继承的注释对注释类型进行注释,实现类也不会继承Inherited的java doc中所述的注释: 另请注意,此元注释仅使注释从超类继承;已实现的接口上的注释无效。 这可能是什么原因?了解对象的类在运行时确实实现的所有接口并不是一件难事,因此,在做出此决定后一定有充分的理由。

6
从C ++中的模板类继承
假设我们有一个模板类Area,它具有一个成员变量T area,一个T getArea()和一个void setArea(T)成员函数。 我可以Area通过键入创建特定类型的对象Area<int>。 现在,我有一个Rectangle继承Area该类的类。由于Rectangle本身不是模板,因此无法键入Rectangle<int>。 如何专门化对象的继承Area类型Rectangle? 编辑:对不起,我忘了澄清-我的问题是,是否有可能不专门化就继承Area,因此它不是作为int的Area继承的,而是因为Area Rectangle可以将其专门化的类型。

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.