2015-12-28 108 views
-3

,如果我有这样的:传递子类型在方法参数,以超类类型

class A{ 
} 

class B extends A{ 
} 

class C extends B{ 
} 

然后可以我通过C的实例来请求A的实例的方法?像这样:

void aMethod(A anInstanceOfA){ 
// some code 
} 

C anInstanceOfC = new C(); 
aMethod(anInstanceOfC); 

如果没有,有没有办法达到相同的结果?

+1

是的,您可以随时在需要A实例的情况下使用C实例。这包括将它传递给需要A参数的方法。 – Jojonete

+2

你为什么不简单地测试它?如果你的机器上没有安装Java,你可以使用在线编译器,比如https://ideone.com/ – Pshemo

+0

,你可以将'A'的任何子类型传递给'aMethod()',顺便说一下,你可以很容易地测试这个在线或在一些ide – Ramanlfc

回答

0

我可以将C的实例传递给请求A实例的方法吗?

是的,你可以。您也可以将类别为C的对象分配给声明为A类型的变量。事实上,C的实例是A的实例(但并非所有A的实例都是C的实例)。