想知道以下的区别是什么: 案例1:基础类 public void DoIt(); 案例1:inheritance的类 public new void DoIt(); 案例2:基类 public virtual void DoIt(); 情况2:inheritance类 public override void DoIt(); 情况1和2似乎基于我已经运行的testing具有相同的效果。 有没有区别或者首选的方法?
我知道在C ++中为基类声明虚析构函数是一个很好的习惯,但是对于作为接口起作用的抽象类声明virtual析构函数总是很重要的。 请提供一些原因和示例。
我想testing一个类是否从另一个类inheritance,但似乎没有一个方法。 class A end class B < A end B.is_a? A => false B.superclass == A => true 我想要的一个微不足道的实现是: class Class def is_subclass_of?(clazz) return true if superclass == clazz return false if self == Object superclass.is_subclass_of?(clazz) end end 但我希望这已经存在。
我需要在PHP中有一个类构造函数,而不用调用父类的构造函数来调用其父类(祖父类)的构造函数。 // main class that everything inherits class Grandpa { public function __construct() { } } class Papa extends Grandpa { public function __construct() { // call Grandpa's constructor parent::__construct(); } } class Kiddo extends Papa { public function __construct() { // THIS IS WHERE I NEED TO CALL GRANDPA'S // CONSTRUCTOR AND NOT PAPA'S […]
我在我的SCSS文件中有这个: .class-a{ display: inline-block; //some other properties &:hover{ color: darken(#FFFFFF, 10%); } } .class-b{ //Inherite class-a here //some properties } 在b类中,我想inheritanceclass-a的所有属性和嵌套声明。 这是怎么做的? 我试过使用@include class-a ,但编译时只会引发错误。
如何在Python中创build类或方法摘要? 我尝试重新定义__new__()像这样: class F: def __new__(cls): raise Exception("Unable to create an instance of abstract class %s" %cls) 但是现在如果我创build一个从Finheritance的类G ,像这样: class G(F): pass 那么我也不能实例化G ,因为它调用了它的超类的__new__方法。 有没有更好的方法来定义一个抽象类?
我的Rails视图和控制器乱七八糟的是redirect_to , link_to和form_for方法调用。 有时link_to和redirect_to在它们链接的path中是明确的(例如link_to 'New Person', new_person_path ),但是path隐含很多次(例如link_to 'Show', person )。 我添加了一些单表inheritance(STI)到我的模型(称为Employee < Person ),并且所有这些方法都会为子类的一个实例(称为Employee )分解。 当rails执行link_to @person , undefined method employee_path' for #<#<Class:0x000001022bcd40>:0x0000010226d038> , undefined method employee_path' for #<#<Class:0x000001022bcd40>:0x0000010226d038>发生错误。 Rails正在寻找一个由对象的类名定义的路由,这是员工。 这些员工路线没有定义,也没有员工控制器,所以这些操作也没有定义。 这个问题之前已经被问到: 在StackOverflow中 ,答案是在整个代码库中编辑link_to等的每个实例,并显式声明path 在StackOverflow上 ,两个人build议使用routes.rb将子类资源映射到父类( map.resources :employees, :controller => 'people' )。 在同样的SO问题中最好的答案build议使用.becomestypes转换代码库中的每个实例对象 另一个在StackOverflow中 ,最重要的答案是在Do Repeat Yourself阵营中,并build议为每个子类创build重复的脚手架。 在这里 ,同样的问题再次出现在最上面的答案似乎是错的(Rails magic Just Works!) 在networking上的其他地方,我发现F2Andybuild议在代码中的任何地方编辑path。 在逻辑现实devise的单表inheritance和RESTful路由的博客文章中,build议将子类的资源映射到超类控制器,如上面的第二个回答中所述。 […]
在JavaScript中,每个对象同时是一个实例和一个类。 要进行inheritance,可以使用任何对象实例作为原型。 在Python,C ++等中,有一些类和实例是独立的概念。 为了做inheritance,你必须使用基类创build一个新的类,然后可以用它来产生派生实例。 为什么JavaScript会朝这个方向发展(基于原型的面向对象)? 基于原型的面向对象的传统的基于类的面向对象的优点(和缺点)是什么?
想象一下有许多构造函数和虚方法的基类 public class Foo { … public Foo() {…} public Foo(int i) {…} … public virtual void SomethingElse() {…} … } 现在我想创build一个覆盖虚拟方法的后代类: public class Bar : Foo { public override void SomethingElse() {…} } 而另一个后裔,做更多的东西: public class Bah : Bar { public void DoMoreStuff() {…} } 我真的不得不将Foo的所有构造函数复制到Bar和Bah中吗? 然后,如果我在Foo中更改构造函数签名,是否必须在Bar和Bah中更新它? 有没有办法inheritance构造函数? 有没有办法来鼓励代码重用?
我不明白为什么在Java注释中没有inheritance,就像Java类一样。 我认为这将是非常有用的。 例如:我想知道给定的注释是否是一个validation器。 通过inheritance,我可以自反地浏览超类来知道这个注释是否扩展了ValidatorAnnotation 。 否则,我怎么能做到这一点? 那么,任何人都可以给我一个这个devise决定的理由吗?