问题
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.
回答1:
According to this page, you have the right way figured out to extend inner classes. A few tips about it can be found here, in the middle of the article (search for "extend").
回答2:
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.
回答3:
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.
回答4:
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