Duvida em metodo na classe

2 respostas
P

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);

		  
		 }
}

2 Respostas

J

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);

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); 

        
       } 
}
S

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.

Criado 28 de março de 2006
Ultima resposta 28 de mar. de 2006
Respostas 2
Participantes 3