dúvidas em questoes Livro da Kathy - cap. 10

6 respostas
joaosavio
org
  | -- Robot.class
  |
  | -- ex
        |-- Pet.class
        |
        |-- why
              |-- Dog.class

And the following source file:

class MyClass { 
  Robot r;
  Pet p;
  Dog d;
}
Whichstatement(s)mustbeaddedforthesourcefiletocompile?(Chooseallthatappl

A.package org;

B.import org.<em>;

C.package org.</em>;

D.package org.ex;

E.import org.ex.*;

F.package org.ex.why;

G.package org.ex.why.Dog;

Resposta: B, E e F

B e E ok, mas, por que é a F e não a G??? Se fosse no netbeans eu importaria da maneira da G.

foo
  |
  test 
     |
     xcom
        |--A.class
        |--B.java

And these two files:

package xcom;
public class A { }

package xcom;
public class B extends A { }

Which allows B.java to compile? (Choose all that apply.) 
A.  Set the current directory to xcom then invoke
javac B.java
B.  Set the current directory to xcom then invoke
javac -classpath . B.java
C.  Set the current directory to test then invoke
javac -classpath . xcom/B.java
D.  Set the current directory to test then invoke
javac -classpath xcom B.java
E.  Set the current directory to test then invoke
javac -classpath xcom:. B.java

Resposta: C
Mas ao chamar javac -classpath . xcom/B.java eu nao estaria procurando A.java no diretorio atual (test)???

  1. Given three files:
package xcom;
public class A {
  // insert code here 
}

package xcom;
public class B extends A {public void doB() { System.out.println("B.doB"); } }

import xcom.B;
class TestXcom {
  public static void main(String[] args) {
    B b = new B();  b.doB();  b.go();
  }
}
Which,insertedat// insert code here will allow all three files to compile? (Choose all  

thatapply.)

A.void go() { System.out.println(a.go); }

B.public void go() { System.out.println(a.go); }

C.private void go() { System.out.println(a.go); }

D.protected void go() { System.out.println(a.go); }

E.Noneoftheseoptionswillallowthecodetocompile

Resposta: B is correct. The public access modifier is the only one that allows code from outside
a package to access methods in a package - regardless of inheritance.

Mas A e B não estão no mesmo pacote???

Abraços e valeu
João Sávio

6 Respostas

eduardoac

joaosavio:
2.

Resposta: B, E e F

B e E ok, mas, por que é a F e não a G??? Se fosse no netbeans eu importaria da maneira da G.


Como disse em sua resposta, “importaria” e a declaração é de pacote e não importação. Assim, a F esta certa e a G errada, a G estaria certa se fosse import.

Obs: Não cheguei a ler as outras questões, quando eu ler, posto mais!

Abraços!

Jeferson_Manetti

Feliz 2009 XD

essas 3 perguntinhas ai são boas em…

a 1ª fiquei sem entender… se eu estiver localizado no ultimo pacote da hierarquia não preciso fazer um import daquels q estão acima de mim? so daqueles q estão abaixo? tipo no caso da letra F…
a letra G esta erada pq vc esta tentando empacotar dentro da Classe Dog ^^

a 2ª a letra C esta certa… esta procurando no diretorio atual “.” e no diretorio “xcom/”

a 3ª as Classes A e B estão no mesmo pacote mais a classe TestXcom não… ok? por isso tem o import xcom.B; certo?
dai a letra B esta correto pq o metodo e publico… acesso geral pra galera… ^^
agora na minha cabecinha a letra D tamebm funcionava =( pq eh protected e estou acessando por herança, certo?
não poderia fazer assim new A().go(); mas do jeito q esta funciona, não?

caralho confundi ainda mais a pergunta XD

diegosantiviago

Esta declaração seria de import, não de package.

Ele não procura A.java, ele procura A.class

  • A.java é o código-fonte, A.class são os bytecodes.

Na classe TestXCom você só pode acessar se o método go() se for público, porque ele está em outro pacote!

Jeferson_Manetti

diegosantiviago:

Na classe TestXCom você só pode acessar se o método go() se for público, porque ele está em outro pacote!

Com o protected eu consigo acessar de outro pacote desde q seja por herança, certo?

ainda estou confusso nisso… alguem mais poderia opinar?

diegosantiviago

Sim, mas você está acessando a partir de outra classe, da classe TestXcom

joaosavio

diegosantiviago:
2.

Esta declaração seria de import, não de package.

Ele não procura A.java, ele procura A.class

  • A.java é o código-fonte, A.class são os bytecodes.

Na classe TestXCom você só pode acessar se o método go() se for público, porque ele está em outro pacote!

Entao, mas o A.class não está no diretório xcom??? E nao no atual!
Quando chamo javac -classpath . xcom/B.java o classpath está definido no diretório atual (test) ok?

Criado 31 de dezembro de 2008
Ultima resposta 6 de jan. de 2009
Respostas 6
Participantes 4