方法的重载可以在不同类中实现吗?

方法的重载只能在同一个类中实现吗?
子类继承父类的话,子类实现父类方法的重载严谨意义上还算不算重载?
我查到的好多资料都是在同类中才有重载,但是也有少部分说,不同的类也可以进行重载,想问一下有没有知道的

函数重载的定义就是在同一个类当中,出现函数名相同且参数列表不相同的多个函数的情况,那么,同名的这些函数,都被称为重载函数。
不同类之间,分为两种情况:

  1. 不同的类毫无关系,那就没有必要谈重载,每个类都有自己的函数,名称随便起;
  2. 不同的类存在继承关系,严格意义上来讲,虽然函数名相同,但是,不能称为重载,这是子类独有的函数,只是名称恰巧和父类相同而已,
    同时,如果参数列表也与父类相同的话,应该称为重写或者覆盖。

对于一个类加载器对象而言,
在加载父类的时候,并不会因为其某个子类因为有个同名函数而自动加载这个子类,
在加载子类的时候,由于依赖关系也会加载父类,但是父类的加载是独立的过程,并不会因为父类有多个子类,每个子类在加载的时候都要加载一遍父类的信息。
由于父类和子类的加载过程都是相互独立的,所以,如果出现同名函数(参数列表不相同)也就当各自自有的普通函数来处理了。

方法重载是指当前类,不同类不叫重载了。
子类继承父类的方法是重写。
重载子类重写的方法,是属于子类的,是重载。

方法重载,当然是在一个类里面进行啦,你看一下官方是怎么说的

img

盲猜你的意思是 子类重载重写的父类方法? 但重载的方法已经是子类独有的了 跟父类的没关系了 所以还是在同类下

函数重载,是面向对象的编程语言里面的一个概念。
需要构建 类、对象、类信息 这三个概念才会比较容易解释。
类被加载器对象载入虚拟机,才会有被使用的机会。而加载过程中,就是形成类信息的一个过程(函数的代码也会被同时载入)。

类信息也会被虚拟机保存,里面主要保存了 加载器对象,类的全名,属性类型的列表,函数的列表。
其中,函数列表这里,可以重点了解一下:

  1. 函数列表保存的是函数的指针(函数代码所在的存放位置),每个函数都内置一个this参数。
  2. 同名函数,参数列表不同,也会独占一个列表中的位置,这些重载函数会随着列表一同载入虚拟机
  3. Overload的意思(我理解)是指,有了一个函数被载入了,还需要再次载入其他的同名函数
  4. 因为重载函数在列表里面都有位置,所以,都可以被其实例化的对象所调用(内部或外部调用)
  5. 函数的继承会将父类的函数列表拷贝到子类的函数列表当中,但是,重写(或覆盖)的函数不会被添加到函数列表中,它会在父类拷贝过来的列表中,覆盖掉对应的函数指针。

以上说的都是类信息的内容,不要和对象、类这两个概念进行混淆。