我们可以使用多态性将抽象 Class 对象作为参数传递吗?
Can we Pass Abstract Class Object as Argument Using Polymorphism?
我有一个名为 'A' 的 class。 A 是一个抽象 class。并且 class 'B' 扩展了 class 'A'。
我还有一个 class 'C'。在 class 'C' 中有一个名为 show() 的函数。
I want to pass an object of class 'A' which is abstract. Is it
possible?
或者
Can we do this using Polymorphism.
如果是!那怎么办?
I want to pass an object of class 'A' which is abstract. Is it possible?
是的,是的。以下是有效的:
abstract class A {}
class B extends A {}
class C {
public void show(A a) {}
}
即使 A
是抽象的,您也可以接收类型 A
的参数(在这种情况下,将是类型 B
的对象)。
您不能真正传递 class A
的对象,因为 A
是抽象的,无法实例化。
Can we do this using Polymorphism.
上面的例子实际上已经使用了多态(subtyping)。
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping
和上面的答案差不多,只是用代码详细说明了。天真的告诉方式,你不能在新运算符旁边有抽象的 class 名称,除非是数组,如 A a[] = new A[10];
中你仍然为数组中的每个元素分配具体 class 的对象.
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' 的 class。 A 是一个抽象 class。并且 class 'B' 扩展了 class 'A'。
我还有一个 class 'C'。在 class 'C' 中有一个名为 show() 的函数。
I want to pass an object of class 'A' which is abstract. Is it possible?
或者
Can we do this using Polymorphism.
如果是!那怎么办?
I want to pass an object of class 'A' which is abstract. Is it possible?
是的,是的。以下是有效的:
abstract class A {}
class B extends A {}
class C {
public void show(A a) {}
}
即使 A
是抽象的,您也可以接收类型 A
的参数(在这种情况下,将是类型 B
的对象)。
您不能真正传递 class A
的对象,因为 A
是抽象的,无法实例化。
Can we do this using Polymorphism.
上面的例子实际上已经使用了多态(subtyping)。
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping
和上面的答案差不多,只是用代码详细说明了。天真的告诉方式,你不能在新运算符旁边有抽象的 class 名称,除非是数组,如 A a[] = new A[10];
中你仍然为数组中的每个元素分配具体 class 的对象.
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);
}
}