我们可以使用多态传递抽象类对象作为参数吗?

时间:2015-07-13 10:44:00

标签: java polymorphism abstract-class

我有一个名字为A'的班级。 A是一个抽象类。和班级' B'扩展课程' A'。

我还有另一个班级' C'。在课堂上' C'这是一个名为show()的函数。

  

我想传递一个类的对象' A'这是抽象的。是吗   可能的?

或者

  

我们可以使用多态性来做到这一点。

如果是的话!怎么样?

2 个答案:

答案 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