What is the result of attempting to compile and run the above program?
a. Prints A.m1, A.m2, A.m3, A.m3, A.m4,
b. Compiler error at line 16.
c. Compiler error at line 17.
d. Compiler error at line 18.
e. Compiler error at line 19.
f. None of the Above
[Dan added the UBB codes to format the code block.]
[ February 24, 2003: Message edited by: Dan Chisholm ]
Originally posted by Tausif Khanooni:
Just remove "c." while accessing the protected method at line 17. this way you can avoid compilation error at this line. because C class imports A and having a "HAS-A" relation.
rest of the methods can not be accessed.
Since Class C extends class A then it is possible for Class C to access protected methods of Class A even though Class C and Class A are declared in different packages. The relationship between Class C and Class A is an "is-a" relationship because Class C "is-a" subclass of class A. Therefore, a compilation error does NOT occur at line 17.
If the reference, c, is removed from the statement at line 17 then a compilation error will occur due to an attempt to invoke an instance method from a static context.
An example of a "has-a" relationship would be a delagation relationship where one class "has-a" member that is an instance of a class.
Originally posted by Pradeep Bhat:
What if m2 was a protected variable and I typed
[ February 25, 2003: Message edited by: Pradeep Bhat ]
As long as the reference is of type C then it would print the value of the variable. If the reference were of type A then it would generate a compile time error. Go ahead and try it.