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()); } }
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
The longest recorded flight time of a chicken is 13 seconds. But that was done without this tiny ad:
Gift giving made easy with the permaculture playing cards