user1082160
user1082160

Reputation: 195

inner class extending

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

Answers (4)

Haomin
Haomin

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

stryba
stryba

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

Luchian Grigore
Luchian Grigore

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

malexmave
malexmave

Reputation: 1300

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").

Upvotes: 7

Related Questions