Abstract classes and interfaces both have their downsides:
- Abstract classes don't allow multiple inheritance, resulting in an
explosion of tiny classes.
- Interfaces tend to result in a hard to maintain framework because it is a
lot harder to introduce new functionality (can't add a new method with a
default implementation for old apps). Plus not being able to have
convenience functions can make the interface version less useful.
Also the inability to have default implementation in interfaces makes it
more annoying in places to control what appears in the SDK, since we can't
use our @hide tricks or else third party apps can't implement it because
they can't implement the needed hidden methods.
I go back and forth between the two. I think I have settled on interfaces
for small little things with one or two methods (callbacks like all the
things on ListView) and abstract classes for larger protocols.
One thing I am sure of, however: protected sucks.
On Sun, Jul 24, 2011 at 9:42 PM, Zsolt Vasvari zvasv...@gmail.com wrote:
An interface is exactly just that (plus constant declerations). With
abstract classes, you can have static methods and everything else that
comes with a proper class. The drawback is, of course, that you can
only inherit from at most one abstract class.
I cannot think of even a single example, off the top of my head, where
an abstract class in Android could have also been defined as an
interface without losing any functionality.
On Jul 25, 12:05 pm, Indicator Veritatis mej1...@yahoo.com wrote:
Those many cases for this there is no particularly good reason one
was picked over the other are most likely, I hope, the cases where I
gave up on trying to figure out why the Android team chose to make the
one 'abstract class' and the other 'public interface';)
On Jul 21, 10:28 pm, Dianne Hackborn hack...@android.com wrote:
On Thu, Jul 21, 2011 at 8:16 PM, Indicator Veritatis
mej1...@yahoo.comwrote:
They do not pause to explain, for example ... why some classes are
defined
a public abstract classes, while very similar other classes are
defined as interfaces.
Well hopefully you generally don't care. And to be honest, in many
cases
for this there is no particularly good reason one was picked over the
other.
;)
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time
to
provide private support, and so won't reply to such e-mails. All such
questions should be posted on public forums, where I and others can see
and
answer them.- Hide quoted text -
- Show quoted text -
--
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--
Dianne Hackborn
Android framework engineer
hack...@android.com
Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails. All such
questions should be posted on public forums, where I and others can see and
answer them.
--
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en