<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><blockquote type="cite" class="">On Dec 9, 2015, at 4:11 PM, Jean-Daniel Dupas via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:<br class=""></blockquote><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">My experience with class cluster, is that they are confusing and almost implemented wrong. You can as easily create a « class cluster » simply be not exposing the constructor of your class and providing factory methods instead.</span></div></blockquote></div><br class=""><div class="">This is not possible with Swift, because it does not have a “private” access modifier. In order for subclasses to be able to override the abstract superclass’s designated initializer, that initializer has to be public. Callers can then call the initializer on the superclass and get undefined behavior.</div><div class=""><br class=""></div><div class="">Charles</div><div class=""><br class=""></div></body></html>