Utilizando, en su caso, el método de la subclase

terca:

Tengo el siguiente código:

public class A {
    private boolean val(){
        return true;
    }

    protected boolean test(){
        return val();
    }
}

public class B extends A {
    private boolean val(){
        return false;
    }
}

public class C {
    public static void main(String[] args){
        B b = new B();
        System.out.println(b.test());
    }
}

Devuelve cierto porque el método de prueba () en una llama de un val (). Después de algunas investigaciones, comprendí que se espera en Java. Sin embargo, me gustaría test () para imprimir falsa cuando se llama desde B, y verdadero cuando se llama desde A. ¿Es posible hacer eso?

Eran :

La razón de sus llamadas de código A's val()y no B' s val()es que el val()método tiene privatemodificador de acceso y por lo tanto no puede ser cambiada. Cambiar el modificador de acceso a protected.

public class A {
    protected boolean val(){
        return true;
    }

    protected boolean test() {
        return val();
    }
}

public class B extends A {
    protected boolean val() {
        return false;
    }
}

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=410225&siteId=1
Recomendado
Clasificación