Duvida questao [RESOLVIDO]

5 respostas
evertonsilvagomesjav

Pessoal essa questa esta correta?

Given a class Repetition:
1. package utils;
2.
3. public class Repetition {
4. public static String twice(String s) { return s + s; }
5. }
and given another class Demo:
1. // insert code here
2.
3. public class Demo {
4. public static void main(String[] args) {
5. System.out.println(twice("pizza"));
6. }
7. }
Which code should be inserted at line 1 of Demo.java to compile and run Demo to print
"pizzapizza"?
A. import utils.*;
B. static import utils.*;
C. import utils.Repetition.*;
D. static import utils.Repetition.*;
E. import utils.Repetition.twice();
F. import static utils.Repetition.twice;
G. static import utils.Repetition.twice;
Answer: F
Porquê Demo precisaria herdar a classe Repetition para acessar o metodo da forma que esta no exericio, e herdando somente usando o import assim seria valido:
import ultils.Repetition;

ou assim:

import utils.*;

5 Respostas

Felagund

[quote=evertonsilvagomesjava]

Porquê Demo precisaria herdar a classe Repetition para acessar o metodo da forma que esta no exericio, e herdando somente usando o import assim seria valido:

ou assim:

não, nenhum dessas duas opções funcionaria.

para usar algo necesse estilo deveria ter no codigo

Repetition.twice("pizza");

e não

twice("pizza");

o import static importa os metodos estaticos de uma classe para a classe atual, isso não é herança, somente uma importação.

evertonsilvagomesjav

mas com herança essa importaçao tb ocorre...eu fiz o teste aqui funcionou...

package ultils;

public class Repetition {

	public static String twice(String s) { 
		
		return s + s; 
		
	}
 }
package com.certificação.oo3;

import ultils.*;

public class Demo extends Repetition {

	public static void main(String[] args) {
	
		System.out.println(twice("pizza"));
		
	}

}
Felagund

Sim funciona, mas vc não possui essa alternativa :slight_smile:

evertonsilvagomesjav

È o exercicio ta certo funciona tb da forma que foi passad, chamando o método sem o nome da classe tem que importar o método tb...

package ultils;

public class Repetition {

	public static String twice(String s) { 
		
		return s + s; 
		
	}
 }
package com.certificação.oo3;

import static ultils.Repetition.twice;


public class Demo {

	public static void main(String[] args) {
	
		System.out.println(twice("pizza"));
		
	}

}
Ou funcionaria tb:
import static ultils.Repetition.*;
Nykolas_Lima
evertonsilvagomesjava:
È o exercicio ta certo funciona tb da forma que foi passad, chamando o método sem o nome da classe tem que importar o método tb...
package ultils;

public class Repetition {

	public static String twice(String s) { 
		
		return s + s; 
		
	}
 }
package com.certificação.oo3;

import static ultils.Repetition.twice;


public class Demo {

	public static void main(String[] args) {
	
		System.out.println(twice("pizza"));
		
	}

}
Ou funcionaria tb:
import static ultils.Repetition.*;

Cara, o exercício não está cobrando o conceito de HERANÇA, ele está cobrando o conceito de importações estáticas.

As importações estáticas servem de uma maneira para que você não precise ficar colocando NomeClasse.metodoEstatico.

Com a importação estática é como se você tivesse IMPORTADO todos os métodos estáticos de determinada classe, sendo assim você pode acessa-los simplesmente pelos seus nomes e não necessariamente colocando o nome da classe antes da chamada.

"The static import construct allows unqualified access to static members without inheriting from the type containing the static members. Instead, the program imports the members, either individually:"

http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html

abraço

Criado 10 de fevereiro de 2010
Ultima resposta 10 de fev. de 2010
Respostas 5
Participantes 3