我有一个名字为A'的班级。 A是一个抽象类。和班级' B'扩展课程' A'。
我还有另一个班级' C'。在课堂上' C'这是一个名为show()的函数。
我想传递一个类的对象' A'这是抽象的。是吗 可能的?
或者
我们可以使用多态性来做到这一点。
如果是的话!怎么样?
答案 0 :(得分:3)
与上面的答案非常相似,只是用代码详细说明。天真的说法,你不能在new运算符旁边有抽象类名,除了数组的情况,如A a[] = new A[10];
,你仍然为Array中的每个元素分配具体类的对象。
abstract class A{
abstract void tell();
}
class B extends A{
void tell(){
System.out.println("I am B Telling");
}
}
public class Test{
public static void whoTold(A a)
{
a.tell();
}
public static void main(String[] args){
B b = new B();
whoTold(b);
}
}
答案 1 :(得分:2)
我想传递一个抽象类'A'的对象。有可能吗?
是的,确实如此。以下是有效的:
A
即使A
是抽象的,您也可以接收类型B
的参数(在这种情况下,它将是A
类型的对象)。
您无法真正传递类A
的对象,因为{{1}}是抽象的,无法实例化。
我们可以使用多态性来做到这一点。
上面的例子实际上已经使用了多态(subtyping)。
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping