| Author |
Access Modifier/Package
|
Nabila Mohammad
Ranch Hand
Joined: Nov 05, 2007
Posts: 661
|
|
This is from an online Mock Exam - http://www.akgupta.com/Java/mock_exam.htm The say() method defined in Super.java has a protected modifier That would mean it's accessible within the it's own package and in the subclass which may be outside the package. But i still get the error in line 7 and 8 , something to do with protected modifier. I think I am missing something ..just dont know what!
|
The future belongs to those who believe in the beauty of their dreams.Dream BIG!
|
 |
Harshit Rastogi
Ranch Hand
Joined: Apr 15, 2008
Posts: 131
|
|
Hi The line 7 and 8 gives error because you can acces a protected method only via class which has inherited it and not by directly creating a object of a class in a different package.
|
<a href="http://technologiquepanorama.wordpress.com" target="_blank" rel="nofollow">My Techie Blog</a><br /><a href="http://www.java-questions.com" target="_blank" rel="nofollow">Java Questions</a>
|
 |
vidhya suvarna
Ranch Hand
Joined: Aug 28, 2008
Posts: 148
|
|
The code is giving Compiler Error because the method say() in Super is available to SubTwo & SubOne via inheritance though its access is protected. So you do not need any reference to access them, they can be access just be their name.
|
SCJP 1.4 - 88%<br />SCWCD 1.5 - Preparing
|
 |
Harshit Rastogi
Ranch Hand
Joined: Apr 15, 2008
Posts: 131
|
|
Originally posted by Harshit Rastogi: Hi The line 7 and 8 gives error because you can acces a protected method only via class which has inherited it and not by directly creating a object of a class in a different package.
Let me rephrase it The line 7 and 8 gives error because you can acces a protected method only via class object (SubTwo) which has inherited it and not by directly creating a object of a class directly (Super, SubOne)in a different package.
|
 |
Nabila Mohammad
Ranch Hand
Joined: Nov 05, 2007
Posts: 661
|
|
I have slightly modified the code. Thanks. I kind of rememeber something about accesing protected members through inheritance and not by reference... But i still can't the right statement for acessing say() in Super and SubOne class. If i could get some help with that.... [ September 11, 2008: Message edited by: Nabila Mohammad ]
|
 |
vidhya suvarna
Ranch Hand
Joined: Aug 28, 2008
Posts: 148
|
|
|
For the code you provided at the start, you can access the say() of Super by say("Java")...
|
 |
Paul Somnath
Ranch Hand
Joined: May 19, 2008
Posts: 177
|
|
@NABILA MOHAMMAD Remember that a protected class members can be always accessed thorough inheritance but not through references. Have a look at the following code: So the say method cannot be accessed through reference. Can you spot the difference now? For more explanations, goto K&B: page 34-39.. Have a look at this url for more. [ September 12, 2008: Message edited by: Paul Somnath ]
|
Preparing for SCJP 6.0
|
 |
Nabila Mohammad
Ranch Hand
Joined: Nov 05, 2007
Posts: 661
|
|
Originally posted by Paul Somnath: @NABILA MOHAMMAD Remember that a protected class members can be always accessed thorough inheritance but not through references. Have a look at the following code: So the say method cannot be accessed through reference. Can you spot the difference now? For more explanations, goto K&B: page 34-39.. Have a look at this url for more. [ September 12, 2008: Message edited by: Paul Somnath ]
Hi Paul, Thanks for the explanation. I had already gone through the website as well as the K&B. However they have both mentioned accessing variable in the Parent class- which has not been re defined in the child class. If i have defined a say() method in all the three classes - Super,Subone and SubTwo Or a variable s in all the three - that case how do I call the variable or method in Super or SubOne class because it will always give the value of SubTwo.I mean is it even possible!? [ September 12, 2008: Message edited by: Nabila Mohammad ]
|
 |
 |
I agree. Here's the link: jrebel
|
|
subject: Access Modifier/Package
|
|
|