¿Cuál es el resultado de ejecutar el siguiente código?
publicclassTest{
publicstaticvoidmain(String[] args){
Base base =newSub();
base.add(1,2,3);
Sub sub =(Sub) base;
sub.add(1,2,3);}}classBase{
publicvoidadd(int t,int... arr){
System.out.println("Base");}}classSubextendsBase{
publicvoidadd(int t,int[] arr){
System.out.println("Sub1");}publicvoidadd(int t,int a,int b){
System.out.println("Sub2");}}
resultado de la operación:
Sub1
Sub2
Puntos de conocimiento:
El objeto base, en lo que respecta al método, la compilación mira a la izquierda y la operación mira a la derecha.
Anulando el método de la clase padre, el tipo y número de parámetros formales deben ser los mismos que el método anulado de la clase padre, por lo que sub2 no es una reescritura, sino una sobrecarga de sub1.
Los parámetros deformables son equivalentes a matrices.
El método para determinar el número de parámetros formales con coincidencia de prioridad de sobrecarga.