我有一个名字为'A'的课程。 A是一个抽象类。 'B'级延伸到'A'级。我们可以将抽象类对象作为使用多态性的参数传递吗?
我还有另一班'C'。在'C'类中有一个名为show()的函数。
我想传递一个抽象类“A”的对象。是否可以使用 ?
或者
我们能做到这一点使用多态性。
如果是的话!那么如何?
我有一个名字为'A'的课程。 A是一个抽象类。 'B'级延伸到'A'级。我们可以将抽象类对象作为使用多态性的参数传递吗?
我还有另一班'C'。在'C'类中有一个名为show()的函数。
我想传递一个抽象类“A”的对象。是否可以使用 ?
或者
我们能做到这一点使用多态性。
如果是的话!那么如何?
差不多与上面相同的答案,只是阐述的代码。天真的告诉方式,除了数组之外,不能在新运算符旁边有抽象类名,如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);
}
}
我想通过类“A”,这是抽象的对象。可能吗?
是的。以下是有效的:
abstract class A {}
class B extends A {}
class C {
public void show(A a) {}
}
即使A
是抽象的,你可以收到A
类型(在这种情况下,将类型B
的对象)的参数。
虽然A
是A
,但不能真正传递对象,因为A
是抽象的,不能实例化。
我们可以使用多态性来做到这一点。
上面的例子实际上已经使用了多态(子类型)。
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping
你不能有一个类A的对象... – immibis
@ZartashZulfiqar你为什么不能坚持语言的规则。你不能实例化一个抽象类。期。 – CKing
你可以做到这一点。 A a = new B();这是你想要的? –