Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Exercicio 6

Estou com uma pequena duvida na questão 6 pois classe A não foi importada porque ela da erro na hora da instancia queria entender

5 respostas
solução!

Adaumir, quando a classe B importa

import static a.A.*;

ela só ta importando a variável VALOR que é estática

 public static final int VALOR = 15;

Como ela tem * se tivesse outras variáveis ou métodos estáticos ela também iria importar, mas nesse caso é só o VALOR mesmo.

Repara também que a classe A não foi importada, pra ela ser importada precisaria ter

import a.A ou
import a.*
package b;
import static a.A.*;
class B{
    void m() {
        A a = new A();
        a.executa(VALOR);
    }
}

Então é esse o motivo da resposta

Não importamos a classe A, somente seus membros, erro de compilação ao tentar referenciá-la

Espero que tenha entendido :D

A partir de 20 minutos no vídeo dessa aula o Guilherme explica isso, assiste de novo que vai clarear a sua cabeça. Bons estudos

Ah sim verdade, Obrigado Vânia Almeida

Boa noite Adaumir, vi que o exercício que você comentou é o exercício 7 e nele temos essas duas classes abaixo. A classe 'A' e a classe 'B', se você olhar a classe 'A' está correta, e a 'B' também, porém a classe 'B' não é public, ou seja, nenhuma outra classe fora do pacote (package) que ela está conseguem enxergar-la. Isso acontece devido aos modificadores de acesso do Java, pois no Java existem alguns modificadores de acesso como o 'public', 'private' , 'protected (ou default)' , entre outras. A 'public' permite com que a classe ou variável ou método que "carrega" ela, possa ser visto em outros lugares. A 'private' permite que a variável ou método que a "carregue" seja visível apenas na classe (class) que ela está. E a 'protected (ou default)' permite que a classe ou variável ou método que "carrega" ela, possa ser visto apenas no pacote (package) que ela encontra.

Obs: Quando falo : " a classe ou variável ou método que carrega " . Estou me referindo ao 'public int numero' , aonde o int Numero é quem carrega o public, ficando:

'Modificador_de_Acesso  | Tipo_Variavel  |  Nome_Variavel'
public |  int |  numero
package a;
public class A {
    public static final int VALOR = 15;
    public void executa(int x) {
        System.out.println(x);
    }
}
package b;
import static a.A.*;
class B{
    void m() {
        A a = new A();
        a.executa(VALOR);
    }
}

Acho que a confusão está em:

"Não importamos a classe A, somente seus membros, erro de compilação ao tentar referenciá-la"

"Não importamos a classe A, somente seus membros estáticos, erro de compilação ao tentar referenciá-la"

Se fossem seus membros tudo seria importado não?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software