Win a copy of The Java Performance Companion this week in the Performance 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
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic