This week's book giveaway is in the Design forum.
We're giving away four copies of Design for the Mind and have Victor S. Yocco on-line!
See this thread for details.
Win a copy of Design for the Mind this week in the Design 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