Sure. The only reason to override Clear() is if we wanted to do something entirely different than what the CollectionBase.Clear() method already does for us. In our case, what Clear() does is just fine, we just want to add to it.

Since we derive PhotoAlbum from CollectionBase, we can access the protected members. The protected OnClear() method is provided to perform additional work during a Clear(), which is exactly what we want to do in chapter 5.

As you've realized, you could make this work either way, but the OnClear() seems more appropriate, and is in fact invoked by CollectionBase whenever Clear() is called.