今天组内培训,讲到了方法覆盖,当时讲到构成方法覆盖的条件: 1.方法覆盖要求参数签名必须一致; 2.方法覆盖要求返回类型必须一致. 父类: public class Parent { public int a(){ return 1; } } 子类: public class Son extends Parent{ public long a(){ return 2; } } 上面父类和子类的a方法返回值不是一致的啊,这样就不构成覆盖的条件了,但是为什么就是错的呢?还是覆盖还有其他的条件? 小弟
所谓覆盖实际上是父子类之间的关系。
当父类有个方法为a()时,继承它的这个子类也有个方法为a()这就叫覆盖。
如:
父类
public class father
{
public a()
{
System.out.print("我是父类的a方法");
}
public b()
{
System.out.print("我是父类b方法");
}
}
子类
public class son extends father
{
public a()
{
System.out.print("我是子类的a方法");
}
}
当调用时这样
son s = new son();
s.a();
s.b();
输出结果为:
我是子类的a方法
我是父类的b方法