Reputation: 195
In java, say I have the following class:
public class A{
protected class B{
}
}
can I extend the inner class by doing the following?
public class C extends A{
protected class D extends B{
}
}
What I want to do is that I have the class C above and I need to change something in A's inner class so I was thinking that I need to extend the inner class to do so but I wasn't sure how exactly to do that.
Upvotes: 14
Views: 21320
Reputation: 1559
Each inner class can independently inherit from an implementation. Thus, the inner class is not limited by whether the outer class is already inheriting from an implementation.
--- Thinking In Java
Upvotes: 0
Reputation: 2027
You are allowed to do that but don't expect your C class to use D class instead of A's inner B class automatically.
Upvotes: 1
Reputation: 258568
If that doesn't work (I don't think it will), the following should:
public class C extends A{
protected class D extends A.B{
}
}
Well, it will, but what if you have another class named B
outside of A
?
Edit: nope, it makes no difference. Even if there is another class named B
, it will still take A.B
. So your syntax is correct.
Upvotes: 1