Java:通过继承类

时间:2015-05-21 13:37:03

标签: java inheritance interface casting

适合时间的问候:)

在Java中工作,我有一个接口A.此接口的所有实现者也扩展了类B,但是B没有实现A.在我们使用A的实例(引用为A)的类中,它被转换为a B引用,以便我们可以使用B类中定义的方法。从概念上讲,Method也应该属于接口A.

你能想到一个不将方法引入接口A的原因,这样我们就不必将它转换为B吗?我是否可以覆盖子类中的Method并只调用超级版本,以便在IDE等中更容易导航?

2 个答案:

答案 0 :(得分:4)

  

在我们使用A实例(引用为A)的类中,它被转换为B引用,以便我们可以使用在类B中定义的方法。

所以我假设你有这个场景

locationListener

如果这是真的,这可以吗?

public void doStuff(A aType){
   ...
   B bType = (B) aType;
   ...
}

我创建了以下内容来测试它。

private <T extends B & A> void example(T type){
    type.aStuff();
    type.doBStuff();
}

给我

A stuff
B stuff

答案 1 :(得分:0)

为什么不创建一个扩展B并实现A的抽象类?假设这个类被称为C,你的其他类将扩展C并实现A所需的方法,但是会为你提供B中可用的方法而不进行强制转换。

我认为移动方法现在不是一个好主意,也许,最多可以让B实现A(假设你没有其他类,你还没有谈到哪些类依赖于类和接口你所提到的)。