java的父子类之间是否存在重载呢?
public class A
{
public void a(int x){}
}
public class B extends A
{
public void a(Object x){}
}
public class Main
{
public static void main(String args[])
{
B b = new B() ;
b.a(2) ;
b.a(new Object()) ;
}
}
如果不存在那么对于A和B中的a方法怎么解释呢?
我现在也有点乱了, 大家的观点都不一样...但是大家的意思是这肯定不是父子类之间的重载, 而且有提到覆盖. 我之间学习的过程中, 一直把重载就当作覆盖来看, 但是看样子我的理解是错的, 那么什么是覆盖呢?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,你提到的这种情况不叫重载,是隐藏(之前有写错成覆盖)
其次,重载的一个定义就是不能“跨域”,显然这两个方法在不同的两个类中
你可以试试下面这段代码(会报错),应该有助于你理解重载和覆盖
重载只发生在同一类中,你这个即不属于重载,也不属于重写,因为方法名和方法参数确定一个方法。a(int x)和a(Object o)属于两个方法,所以子类B继承了父类A的a(int x)方法。覆盖了,你可以在父类中用关键字指明权重