(original) (raw)
Hi Sam,On 12/28/2012 12:28 PM, Sam Pullara
wrote:
On Dec 28, 2012, at 3:02 PM, Joe Darcy <joe.darcy@oracle.com> wrote:has exactly one abstract method. Since default methods are not abstract, any default methods declared in an interface do not contribute to its abstract method count. If an interface declares a method overriding one of the public methods of java.lang.Object, that also does <em>not</em> count toward the abstract method count.
This is pretty murky. This works:
interface Foo {@Overrideboolean equals(Object other);}
but if you try this
interface Foo {@Overridedefault boolean equals(Object other) {return false;}}
it does give an error that says I can't override:
java: default method equals in interface spullara.Foo overrides a member of java.lang.Object
Seems like "override" is the wrong word to use and will likely be confusing since we are explicitly disallowing the second one.
Yes, I was contemplating whether "override" was the best phrasing to use in the wording above because of this sort of wrinkle. Instead "\*abstract\* method overriding one of the ..." might help distinguish this particular case.
\-Joe