Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

How does this work ?

 
sachin jauhari
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Why does the following give compilation error at line 1.
Class B extends Class A which is in a different package.

//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; // line 1
}
public static void main(String[] args)
{
A a = new B();
B b = new B();
b.process(a);
System.out.println(a.getI());
}
}
 
Brijesh Dinkar
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
when you are accessing the variable 'i', you are not making use of inheritance, hence the problem.The protected variable 'i' will not be visible to classes outside the pacakge unless you make use of inheritance.
So somethin like this will work-
package p1;
public class A
{
protected int i = 10;
public int getI() { return i; }
}

package p2;
import p1.*;
public class B extends p1.A
{
public void process()
{
i = i*2; // line 1
System.out.println(getI());
}
public static void main(String[] args)
{
new B().process();
}
}

Hope this helps!

Brijesh
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic