Olá pessoal ,
estou em duvida por que quando coloco na linha do comando :
b2.method(‘6’);
uma string ele não chama o metodo :
public void method(String s)
Sempre chama o metodo da classe Base …
Se alguém puder me ajudar agradeceria !!!
abs
public class Base {
public void method(int i) {
System.out.println("Base...Value is " + i);
}
}
public class Sub extends Base {
public void method(int j) {
System.out.println("Sub...This value is " + j);
}
public void method(String s) {
System.out.println("Sub...I was passed " + s);
}
public static void main(String args[]) {
Base b1 = new Base();
Base b2 = new Sub();
b1.method(5);
b2.method(6);
}
}
você tem que mudar o trecho de código que está destacado em vermelho abaixo…
public static void main(String args[]) {
Base b1 = new Base();
[color=“red”]Sub b2 = new Sub();[/color]
b1.method(5);
b2.method(6);
[code]
public class Base {
public void method(int i) {
System.out.println("Base...Value is " + i);
}
}
public class Sub extends Base {
public void method(int j) {
System.out.println("Sub…This value is " + j);
}
public void method(String s) {
System.out.println("Sub…I was passed " + s);
}
public static void main(String args[]) {
Base b1 = new Base();
Sub b2 = new Sub();
b1.method(5);
b2.method(6);
}
} [/code]
O que eu acho que aconteceu é que ‘6’ não é uma String, é um char.
E como char é um inteiro, ele vai chamar a versão que recebe um int.
Tente chamar com “6” (aspas duplas) pra ver o que acontece.