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.
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.
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.
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
来源:https://stackoverflow.com/questions/9458123/inner-class-extending