//in file A.java
package p1;
public class A
{
protected int i = 10;
public int getI() { return i; }
}
//in file B.java
package p2;
import p1.*;
public class B extends p1.A
{
public void process(A a)
{
a.i = a.i*2;
}
public static void main(String[] args)
{
A a = new B();
B b = new B();
b.process(a);
System.out.println( a.getI() );
}
}
Consider following two classes:
What will be the output of compiling and running class B ?
a. It will print 10.
b. It will print 20.
c. It will not compile.
d. It will throw an exception at Run time.
e. None of the above.
Ae galera … prometo q vai ser a ultima do dia ! rsrsrs
De novo … sem compilar … se naum perde a graca!!!
Valeu !!!
[quote=“sens”]acredito que seja a letra “B” por que “i” é protected, então eu posso acessa-lo de sua sub-classe ou de outra classe no mesmo pacote…
[]s Victor…[/quote]
Aí é que tá Xero!
Na verdade o acesso nessa linha
a.i = a.i*2; está sendo feita por uma referencia de A, e não
por B, o acesso só é permitido dentro de B, usando o this(não obrigatório) por exemplo,você poderia acessar o i…
seria como se B has-a o atributo i.
A Superclasse não enxerga a subclasse, e eu não tinha me ligado nisso! desta forma quando de uma subclasse uso a referencia da super, a super não sabe que quem esta invocando é uma subclasse dela, por isso impede o acesso mesmo sendo “protected”…