2
respostas

não consegui entender a resposta desta exercicio

class B {
    void x() {
        System.out.println("vazio");
    }
    void x(String... args) {
        System.out.println(args.length);
    }
}
class C {
    void x(String... args) {
        System.out.println(args.length);
    }
    void x() {
        System.out.println("vazio");
    }
}
class A {
    public static void main(String[] args) {
        new B().x();
        new C().x();
    }
}

a resposta é

Compila e imprime vazio/vazio.

nao consegui enter o por quer new C().x(); , imprime vazio

2 respostas

Voce esta instanciando C e usando o metodo x() sem parametros.

Didaticamente

class B {
    void x() {
        System.out.println("vazio");
    }
    void x(String... args) {
        System.out.println(args.length);
    }
}
class C {
    void x(String... args) {
        System.out.println(args.length);
    }
    void x() { //esse
        System.out.println("vazio");
    }
}
class A {
    public static void main(String[] args) {
        new B().x();
        new C().x();
      //equivale a 
      C c = new C();
       c.x();  // usa o metodo x de C sem parametros
    }
}

Boa noite!

class C {
    void x(String... args) {
        System.out.println(args.length);
    }
    void x() {
        System.out.println("vazio");
    }
}

Mesmo a classe C possuindo 2 métodos com o mesmo nome (x), eles são diferente.

Um tem parametro void x(String... args) e o outro não void x()

No exercicio, após instanciar C (new C()), o método void x() que foi chamado, eis o motivo de imprimir vazio.

Espero ter ajudado!