在java中的方法重写中,两个方法是否可以具有不同的返回类型

在java中的方法重写中,两个方法是否可以具有不同的返回类型,java,overriding,Java,Overriding,我想问,在方法重写中,该方法是否可以有不同的返回类型 例如 class A{ int x(){ System.out.print("1"); } } class B extends A{ void x(){ System.out.print("2"); } } class C{ public static void main(){ A a = new B(); a.x(); } } 什么

我想问,在方法重写中,该方法是否可以有不同的返回类型

例如

class A{
    int x(){
       System.out.print("1");
    }
}

class B extends A{
    void x(){
       System.out.print("2");
    }
}

class C{
    public static void main(){
       A a = new B();
       a.x();
    }
}

什么是o/p以及它是否被称为覆盖。

不同的
返回
类型
不是方法覆盖,通过添加
@Override
注释验证您不能执行此处指定的操作,因为您将得到一个编译器错误,指定您试图覆盖的方法与新定义冲突,使用不兼容的返回类型


为了重写方法,您需要具有相同的方法签名。您可以使用
@Override
注释来测试这一点。

实际上,您可以以有限的方式进行测试。子类可以返回父类返回的类的子类

 class A{
  Object x(){
   System.out.print("1");
   }
  }

class B extends A{
 @Override
 String x(){
   System.out.print("2");
 }
}

除此子类关系外,b/w返回类型,否。

此代码不编译。这几乎总是一个迹象,表明你做的事情不正确。这是真的。应该注意的是,底层方法签名是相同的,因为根据定义,特定类的所有子类都是其继承类型,这就是为什么这样做的原因。