Java 我们可以使用多态性将抽象类对象作为参数传递吗?
我有一个名为“a”的类。A是一个抽象类。“B”类扩展了“A”类 我还有一门课“C”。在类“C”中有一个名为show()的函数 我想传递一个抽象类“A”的对象。它是 可能吗 或 我们可以使用多态性来实现这一点吗 如果是的话!那怎么办 我想传递一个抽象类“A”的对象。可能吗 是的。以下各项有效:Java 我们可以使用多态性将抽象类对象作为参数传递吗?,java,polymorphism,abstract-class,Java,Polymorphism,Abstract Class,我有一个名为“a”的类。A是一个抽象类。“B”类扩展了“A”类 我还有一门课“C”。在类“C”中有一个名为show()的函数 我想传递一个抽象类“A”的对象。它是 可能吗 或 我们可以使用多态性来实现这一点吗 如果是的话!那怎么办 我想传递一个抽象类“A”的对象。可能吗 是的。以下各项有效: abstract class A {} class B extends A {} class C { public void show(A a) {} } 即使A是抽象的,您也可以接收A类型的
abstract class A {}
class B extends A {}
class C {
public void show(A a) {}
}
即使A
是抽象的,您也可以接收A
类型的参数(在本例中,这些参数将是B
类型的对象)
您不能真正传递类A
的对象,因为A
是抽象的,不能实例化。
我们可以使用多态性来实现这一点吗
上面的示例实际上已经使用了多态性(子类型)
与上述答案基本相同,只是用代码进行了详细说明。简单地说,除了使用数组的情况外,新操作符旁边不能有抽象类名,如
A[]=newa[10]代码>其中仍然为数组中的每个元素分配具体类的对象
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级对象…@ZartashZulfiqar为什么不能遵守语言规则。不能实例化抽象类。你可以这样做。A=新的B();这就是您要寻找的吗?您可以将您的方法定义为show(A)
ad,它将接受扩展类型A
的所有内容。这就是你想要的吗?不仅是可能的,而且是推荐的。这就是问题所在。