2015-07-13 22 views
0

我有一个名字为'A'的课程。 A是一个抽象类。 'B'级延伸到'A'级。我们可以将抽象类对象作为使用多态性的参数传递吗?

我还有另一班'C'。在'C'类中有一个名为show()的函数。

我想传递一个抽象类“A”的对象。是否可以使用 ?

或者

我们能做到这一点使用多态性。

如果是的话!那么如何?

+2

你不能有一个类A的对象... – immibis

+1

@ZartashZulfiqar你为什么不能坚持语言的规则。你不能实例化一个抽象类。期。 – CKing

+1

你可以做到这一点。 A a = new B();这是你想要的? –

回答

2

差不多与上面相同的答案,只是阐述的代码。天真的告诉方式,除了数组之外,不能在新运算符旁边有抽象类名,如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

我想通过类“A”,这是抽象的对象。可能吗?

是的。以下是有效的:

abstract class A {} 

class B extends A {} 

class C { 
    public void show(A a) {} 
} 

即使A是抽象的,你可以收到A类型(在这种情况下,将类型B的对象)的参数。

虽然AA,但不能真正传递对象,因为A是抽象的,不能实例化。

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

上面的例子实际上已经使用了多态(子类型)。

https://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping

相关问题