Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们可以使用多态性将抽象类对象作为参数传递吗?_Java_Polymorphism_Abstract Class - Fatal编程技术网

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

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类型的

我有一个名为“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
类型的参数(在本例中,这些参数将是
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
的所有内容。这就是你想要的吗?不仅是可能的,而且是推荐的。这就是问题所在。