Olha, seria legal se vc desse seu ponto de vista dizendo qual vc acha que é a resposta certa e por que vc pensa assim, pois ai a gente poderia corrigir se seu pensamento estiver errado. É melhor do que a gente te entregar as respostas.
De qualquer forma vou tentar responder.
Em Java, pra 2 métodos serem considerados iguais, eles devem ter assinatura igual.
A assinatura de um método é composta, basicamente, pelo nome do método, e pelos tipos de seus parametros.
Há também um outro conceito a se legar em consideração que são os type parameters do método, mas não se preocupe com eles agora. Fonte.
Então, pra mim, as afirmações I e II não fazem muito sentido, porque, no caso da I, se os método são iguais, logo eles tem o mesmo nome. E no caso da II, se são diferentes, logo tem nomes diferentes. Aí seria bom pedir um esclarecimento pro professor sobre isso.
Já a afirmação III é falsa, pois argumentos são os valores que vc passa pro método quando vc o invoca.
A afirmação correta seria: Uma das coisas que diferencia um método com o mesmo nome são os tipos de seus parametros.
Considere o seguinte código:
class Test {
doSomething(String message) {
System.out.println(message);
}
doSomething(String msn) {
System.out.println(message);
}
doSomething(int number) {
System.out.println(number);
}
doSomething(String message, String msn) {
System.out.println(number);
}
}
O primeiro método tem um parametro, o nome desse parametro é message e o tipo dele é String.
No segundo método, o nome do parametro é msn, contudo, pro Java, ele não é diferente do primeiro, pois o nome dos parametros não são relevantes na hora de diferenciá-los, entende?
Já o terceiro método é diferente dos outros dois porque ele tem o mesmo nome, mas o tipo do seu parametro é int.
O quarto método também é diferente, pois ele tem 2 parametros, ou seja, a quantidade também influencia na diferenciação de um método.
Aí, imagina que vc vai invocar o primeiro método.
Test t = new Test();
t.doSomething("Hello!");
No caso, “Hello!” é o argumento que vc está passando para o método. Deu pra entender a diferença entre parametro e argumento e o porquê dessa afirmação ser incorreta?
A afirmação IV até faz sentido (embora eu prefira substituir o termo “visualizados” por “acessados”), contudo, ela está incompleta.
O motivo de ela estar incompleta é que os atributos podem ser visualizados ou acessados POR QUEM?
Qualquer membro (seja atributo, método, classe ou interface) e contructor publico de uma classe por ser acessado por qualquer outra classe do seu programa.
Já os protected também podem ser acessados, só que com algumas limitações: apenas subclasses podem acessá-los.
Já os membros que não tem modificadores de acesso, só podem ser acessados por membros do mesmo pacote.
Então eu exigiria do professor uma explicação mais detalhada sobre essas afirmações e uma possivel revisão do texto.