Java 多态数组是';行不通 package-finalperpractice; 公共类多态测试{ 公共空间功能(){ 系统输出打印项次(“1”); } 公共静态void main(字符串[]args){ 对象obj[]={new PolymorphicTest(),new A(),new B()}; 对于(int i=0;i

Java 多态数组是';行不通 package-finalperpractice; 公共类多态测试{ 公共空间功能(){ 系统输出打印项次(“1”); } 公共静态void main(字符串[]args){ 对象obj[]={new PolymorphicTest(),new A(),new B()}; 对于(int i=0;i,java,Java,我不知道为什么obj[I]找不到function()。 我写了一个覆盖toString()的代码,它工作得很好,但是这个代码没有覆盖。因为obj是对象类型,对象类没有声明函数方法 您可以使用函数方法创建一个接口,并在所有类中实现该接口,只要您需要函数方法 那么 package finalpaperpractice; public class PolymorphicTest { public void function(){ System.out.println("1");

我不知道为什么
obj[I]
找不到
function()

我写了一个覆盖
toString()
的代码,它工作得很好,但是这个代码没有覆盖。

因为
obj
对象
类型,
对象
类没有声明
函数
方法

您可以使用
函数
方法创建一个接口,并在所有类中实现该接口,只要您需要
函数
方法

那么

package finalpaperpractice;
public class PolymorphicTest {
    public void function(){
        System.out.println("1");
    }
    public static void main (String [] args){
        Object obj [] = {new PolymorphicTest(), new A(), new B()};
        for (int i = 0; i < 3; i ++){
            obj[i].function(); // error on this line
        }
    }
}
class A{
    public void function(){
        System.out.println("2");
    }
}
class B{
    public void function(){
        System.out.println("3");
    }
}
应该改成

Object obj
obj

错误消息是什么?你能把它添加到问题中吗?那么调用
function()
的解决方案是什么取决于你的需求。在我的案例中,解决方案是什么正如我提到的,这取决于你的应用程序设计。无论如何,我提到的解决方案之一。非常感谢,你给出了一个方向。可以使用
接口
或使用
扩展
<Your Interface> obj