Tag: 类的超类

Swift的子类化 – 如何重写Init()

我有以下类,用init方法: class user { var name:String var address:String init(nm: String, ad: String) { name = nm address = ad } } 我想这个类的子类,但我不断收到super.init()部分的错误: class registeredUser : user { var numberPriorVisits: Int // This is where things start to go wrong – as soon as I type 'init' it // wants to autocomplete it for me with […]

testing一个Ruby类是否是另一个类的子类

我想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 但我希望这已经存在。

你什么时候需要显式的调用一个超类的构造函数?

所以说我有一个扩展超类的子类。 在什么情况下,我需要显式键入super()来获取超类构造函数来运行? 我在一本关于抽象类的书中看到了一个例子,当它用一个非抽象的子类扩展它的时候,子类的默认构造函数是空的,并且有一个注释说超类的默认构造函数将被调用。 同时我也在这里看到有些人的问题没有明确地调用super() 。 区别是从子类的默认/非默认构造函数调用超类的默认/非默认构造函数?

有没有可能在超类对象上调用子类的方法?

动物是狗和狗的超级有一种叫做树皮的方法 public void bark() { System.out.println("woof"); } 考虑以下几点: Animal a = new Dog(); if (a instanceof Dog){ a.bark(); } 会发生什么? 该分配是不允许的 树皮的呼叫是允许的,并在运行时打印“woof” 树皮的呼叫是允许的,但没有打印 对树皮的调用导致编译时错误 对树皮的调用导致运行时错误 我说2,因为我们正在检查对象是否是狗; 因为狗是与树皮方法类,如果它是,那么我们把它打印出来:s 我的理解在这里正确吗?