重写的返回值类型可以不同

时间:2023-01-18 10:32:05
当重写的父类的返回值类型是子类的返回值类型的父类的时候返回值类型就可以不同  比如父类的返回值是Object 子类的返回值类型是String
 同意吗?

11 个解决方案

#1


没错,返回类型,方法名,参数类型及个数都应一样

#2


可以,如
public class P {
 public Object getR(){
 return null;
 }
}

class S extends P{
public String getR(){
 return null;
 }
}

#3


public class B{
    public Object b(){
     return null;
    }
}

public class A extends B{

    @Override
public String b() {
// TODO Auto-generated method stub
return null;
}
}

String是可以的,但是int double等基本类型就是不可以的!

#4


只要是父类返回类型的子类就行了

#5


楼上正解!!!

#6


引用 4 楼 patrick002 的回复:
只要是父类返回类型的子类就行了



恩  是这样的!

#7


int double 的父类不是object吗?  难道
public class P { 
public Object getR(){ 
return null; 



class S extends P{ 
public int getR(){ 
return null; 

}
不行吗?

#8


  呵呵,据我了解,很多公司笔试会出这样的题目,还有关于 重载 的一些。

#9


学习中

#10


int,double,float等都是基本类型,不是类,更没有父类了,所以你说的不行,无法通过编译
但是如果你改成对应的包装类Integer或者Double、Float等作为子类的返回类型,就可以了,这叫做协变返回

#11


引用 4 楼 patrick002 的回复:
只要是父类返回类型的子类就行了

学习!!!

#1


没错,返回类型,方法名,参数类型及个数都应一样

#2


可以,如
public class P {
 public Object getR(){
 return null;
 }
}

class S extends P{
public String getR(){
 return null;
 }
}

#3


public class B{
    public Object b(){
     return null;
    }
}

public class A extends B{

    @Override
public String b() {
// TODO Auto-generated method stub
return null;
}
}

String是可以的,但是int double等基本类型就是不可以的!

#4


只要是父类返回类型的子类就行了

#5


楼上正解!!!

#6


引用 4 楼 patrick002 的回复:
只要是父类返回类型的子类就行了



恩  是这样的!

#7


int double 的父类不是object吗?  难道
public class P { 
public Object getR(){ 
return null; 



class S extends P{ 
public int getR(){ 
return null; 

}
不行吗?

#8


  呵呵,据我了解,很多公司笔试会出这样的题目,还有关于 重载 的一些。

#9


学习中

#10


int,double,float等都是基本类型,不是类,更没有父类了,所以你说的不行,无法通过编译
但是如果你改成对应的包装类Integer或者Double、Float等作为子类的返回类型,就可以了,这叫做协变返回

#11


引用 4 楼 patrick002 的回复:
只要是父类返回类型的子类就行了

学习!!!