关于java子类方法覆盖(Override)父类方法时,该子类方法返回值的问题
程序员文章站
2022-06-09 13:42:50
...
书上说在方法覆盖(override)时,一定要保证返回值的兼容性。允许子类将覆盖方法的返回值类型定义为父类被覆盖方法返回值类型的子类型。我知道在子类中覆盖父类的方法时,子类方法的返回值类型与父类该方法的返回值类型相同肯定不会报错。但下面的代码为什么会错?
class OverRideA
{
private int name;
private int age;
public OverRideA(int n,int a)//自定义构造器
{
name=n; age=a;
}
public int getN()//返回值类型为int
{
return age;
}
}
class OverRideB extends OverRideA
{
private short id;
public OverRideB(int n,int a)
{
super(n,a);
id=10;
}
public short getN()//覆盖父类的同名方法,返回值类型为short
{
return id;
}
照理来说short应该是int类型的子类,short应该和int兼容的。但为什么编译器会报错:
推荐阅读
-
Java中子类调用父类构造方法的问题分析
-
java基础 静态 static 问在多态中,子类静态方法覆盖父类静态方法时,父类引用调用的是哪个方法?
-
关于java子类方法覆盖(Override)父类方法时,该子类方法返回值的问题
-
Java_子类定义一个方法,与父类的方法名、参数列表相同,但返回值类型不同,程序是否异常?
-
一个关于父类方法访问子类对象中的公有属性的问题
-
java基础 静态 static 问在多态中,子类静态方法覆盖父类静态方法时,父类引用调用的是哪个方法?
-
Java 继承父类时 子类的构造方法的特性
-
JAVA中子类继承父类时构造方法的继承问题(包括有参无参的情况)
-
子类继承父类时,创建对象,构造方法的调用问题