Questions tagged «inheritance»

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

17
继承和多态性之间的主要区别是什么?
今天的单元开卷考试结束时,我被问到了这个问题,结果发现自己迷路了。我正在阅读Head first Java,这两个定义似乎完全相同。我只是想知道我自己的主观差异是什么。我知道有很多与此类似的问题,但是我没有看到能提供明确答案的问题。



8
__proto__与Constructor.prototype有何不同?
function Gadget(name, color) { this.name = name; this.color = color; } Gadget.prototype.rating = 3 var newtoy = new Gadget("webcam", "black") newtoy.constructor.prototype.constructor.prototype.constructor.prototype 它总是返回等级= 3的对象。 但是,如果我执行以下操作: newtoy.__proto__.__proto__.__proto__ 链条最终返回null。 另外,在Internet Explorer中,如果没有__proto__属性,如何检查null ?


11
如何扩展/继承组件?
我想为已经部署在Angular 2中的某些组件创建扩展,而不必几乎完全重写它们,因为基础组件可以进行更改,并希望这些更改也能反映在其派生组件中。 我创建了这个简单的示例,以尝试更好地解释我的问题: 具有以下基本组件app/base-panel.component.ts: import {Component, Input} from 'angular2/core'; @Component({ selector: 'base-panel', template: '<div class="panel" [style.background-color]="color" (click)="onClick($event)">{{content}}</div>', styles: [` .panel{ padding: 50px; } `] }) export class BasePanelComponent { @Input() content: string; color: string = "red"; onClick(event){ console.log("Click color: " + this.color); } } 您是否要仅创建另一种派生成分,例如,在示例颜色的情况下,基本成分的行为为app/my-panel.component.ts: import {Component} from 'angular2/core'; import …

7
接口是否从Java中的Object类继承
接口是否从ObjectJava中的类继承? 如果否,那么我们如何在接口实例上调用对象类的方法 public class Test { public static void main(String[] args) { Employee e = null; e.equals(null); } } interface Employee { }

2
C ++继承-无法访问的基础?
我似乎无法使用基类作为函数参数,是否搞砸了继承? 我的主要内容如下: int some_ftn(Foo *f) { /* some code */ }; Bar b; some_ftn(&b); Bar类以这种方式从Foo继承: class Bar : Foo { public: Bar(); //snip private: //snip }; 这不行吗?我似乎无法在我的主要功能中拨打电话
157 c++  inheritance 

9
为什么不自动调用超类__init__方法?
为什么Python设计人员会决定子类的__init__()方法不会__init__()像某些其他语言那样自动调用其超类的方法?Pythonic和推荐的习语真的像下面这样吗? class Superclass(object): def __init__(self): print 'Do something' class Subclass(Superclass): def __init__(self): super(Subclass, self).__init__() print 'Do something else'



12
继承与聚合
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 关于如何在面向对象的系统中最好地扩展,增强和重用代码,有两种思路: 继承:通过创建子类来扩展类的功能。覆盖子类中的超类成员以提供新功能。使方法抽象/虚拟化,以在超类需要特定接口但对其实现不可知时,强制子类“填入空白”。 聚合:通过采用其他类并将它们组合为新类来创建新功能。将公共接口附加到此新类,以与其他代码互操作。 两者的收益,成本和后果是什么?还有其他选择吗? 我看到这个辩论是定期进行的,但是我认为还没有在Stack Overflow上被要求(尽管有一些相关的讨论)。令人惊讶的是,谷歌也缺乏良好的搜索结果。


13
在运行时,找到扩展基类的Java应用程序中的所有类
我想做这样的事情: List<Animal> animals = new ArrayList<Animal>(); for( Class c: list_of_all_classes_available_to_my_app() ) if (c is Animal) animals.add( new c() ); 因此,我想查看应用程序Universe中的所有类,当我发现一个来自Animal的类时,我想创建一个该类型的新对象并将其添加到列表中。这使我可以添加功能,而不必更新事物列表。我可以避免以下情况: List<Animal> animals = new ArrayList<Animal>(); animals.add( new Dog() ); animals.add( new Cat() ); animals.add( new Donkey() ); ... 通过上述方法,我可以简单地创建一个扩展Animal的新类,它将自动被拾取。 更新:10/16/2008 9:00 AM太平洋标准时间: 这个问题引起了很多反响-谢谢。 从回答和研究中,我发现我真正想做的事在Java下是不可能的。有一些方法可以使用,例如ddimitrov的ServiceLoader机制,但是对于我想要的东西,它们非常繁琐,我相信我只是将问题从Java代码移到了外部配置文件中。 更新5/10/19(11年后!)根据@IvanNik的回答 ,现在有几个库可以帮助解决此问题。org.reflections看起来不错。此外ClassGraph从@Luke和记黄埔的答案看起来很有趣。答案中还有其他几种可能性。 声明我想要的另一种方式:Animal类中的静态函数查找并实例化了从Animal继承的所有类-无需任何进一步的配置/编码。如果必须进行配置,无论如何,我还是可以在Animal类中实例化它们。我了解这是因为Java程序只是.class文件的松散联合,而事实就是如此。 有趣的是,这似乎在C#中是微不足道的。

5
C#:引发继承的事件
我有一个包含以下事件的基类: public event EventHandler Loading; public event EventHandler Finished; 在从该基类继承的类中,我尝试引发该事件: this.Loading(this, new EventHandler()); // All we care about is which object is loading. 我收到以下错误: 事件“ BaseClass.Loading”只能出现在+ =或-=(BaseClass')的左侧 我假设我无法像其他继承成员一样访问这些事件?
144 c#  events  inheritance 

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.