[英]class and interface
我想知道三件事。
1:如果我在声明该方法的超类中实现了一个接口(带有一个方法),然后在另一个类中扩展了该超类。 然后,我不必重新声明该方法,对吗?
2:但是,如果我不在子类中声明该方法,而是在子类中声明,则我将实例化该超类。 那会发生什么呢? 它不包含实例中的任何方法。
3:可以在类中使用Implement,然后不声明该方法吗? 也许仅将其用作扩展其他类的超类。 然后只需在子类中声明该方法,还是必须在正在实现接口的当前类中声明该方法?
假设您的意思是“重新实现”而不是“重新声明”,那是正确的。
取决于该类是否被声明为抽象。 如果超类是抽象的,则子类要么需要实现它,要么也必须声明为抽象。 如果超类不是抽象的,则它将无法编译。
如果您不想实现它,则声明它。
这是为PHP和Java标记的-我将为Java回答。
正确,它将从超类继承该方法的实现。
如果仍将超类声明为实现该接口,则它将导致编译时错误,因此这是不可能的。
不,正如我之前所说,如果实现接口,则必须实现或继承该接口声明的方法。 唯一的例外是,如果类是abstract
,则无需为接口方法(隐式abstract
)提供实现。 抽象类无法实例化。
只需添加第二个问题的答案(对于Java):
如在其他答案中提到的那样(@BalusC),如果您的超类告诉它实现了一个接口并且在该接口中未提供方法的实现,则您必须将超类标记为抽象类。 但是您cannot instantiate
超类,因为它是抽象类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.