Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #28362
| From | "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| References | <8l0pl95jubrn24j0tgnqcc21arhkii83ko@4ax.com><535caadc$0$6712$9b4e6d93@newsspool2.arcor-online.net><ljibu5$98l$1@speranza.aioe.org><535cda24$0$6715$9b4e6d93@newsspool2.arcor-online.net><ljilqs$vvv$1@speranza.aioe.org><f2nql9dvkidjochtle75491kv8fnkpnllr@4ax.com> <ljk0dh$cmn$1@dont-email.me> |
| Subject | Re: vocabulary |
| Date | 2014-05-04 13:00 +0100 |
| Message-ID | <qMGdnW2W7d7itvvOnZ2dnUVZ8kWdnZ2d@bt.com> (permalink) |
Martin Gregorie wrote:
> It seems to me that the only reason Java has both Abstract Class and
> Interface definitions is to sidestep having to implement multiple
> inheritance
FWIW, I disagree with this entirely.
For me, as for [some] others, interfaces are an expression of a /contract/ --
they are used to communicate guarantees/requirements between producers and
consumers of APIs.
Abstract classes, on the other hand, are nothing to do with contractual
communication between programmers. They are skeleton implementations.
It's unfortunate that Java's syntax makes the two -- unrelated -- constructs
looks so similar. A different language might present the same concepts very
differently.
One language design that didn't conflate the two concepts would be not to allow
class names to appear in type declarations, but only interface names (with some
simple syntax for defining a class /and/ it's interface[s] at the same time).
Asking people to expound on the difference[s] between interfaces and abstract
classes used to be one of my favourite interview questions (in the days when I
did interviews -- now happily past). But I gave it up since it seemed that all
I ever got were canned responses along the lines of "you can include method
definitions in an Abstract class, you can't in an interface" (probably learned,
more-or-less by heart, at university).
So my answer to Roedy's question would be along the lines of:
"An optionally-top-level syntactic construct delimited by curlies {}." (That
covers enums too -- which I think is in the spirit of the question.)
Although in the contexts where interface names and class names are used as type
names, we can "cancel out" the "names" bit, and call them both types ;-)
-- chris
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
vocabulary Roedy Green <see_website@mindprod.com.invalid> - 2014-04-26 21:09 -0700
Re: vocabulary markspace <markspace@nospam.nospam> - 2014-04-26 21:25 -0700
Re: vocabulary "Qu0ll" <Qu0llSixFour@gmail.com> - 2014-04-27 17:30 +1000
Re: vocabulary Richard Maher <maher_rjSPAMLESS@hotmail.com> - 2014-04-27 14:42 +0800
Re: vocabulary Marcel Müller <news.5.maazl@spamgourmet.org> - 2014-04-27 08:59 +0200
Re: vocabulary "Qu0ll" <Qu0llSixFour@gmail.com> - 2014-04-27 17:33 +1000
Re: vocabulary Marcel Müller <news.5.maazl@spamgourmet.org> - 2014-04-27 12:21 +0200
Re: vocabulary "Qu0ll" <Qu0llSixFour@gmail.com> - 2014-04-27 20:23 +1000
Re: vocabulary Roedy Green <see_website@mindprod.com.invalid> - 2014-04-27 12:52 -0700
Re: vocabulary Martin Gregorie <martin@address-in-sig.invalid> - 2014-04-27 22:30 +0000
Re: vocabulary Marcel Müller <news.5.maazl@spamgourmet.org> - 2014-04-28 08:23 +0200
Re: vocabulary "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2014-05-04 13:00 +0100
Re: vocabulary Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-05-04 08:44 -0400
Re: vocabulary lipska the kat <lipskathekat@example.com> - 2014-04-27 09:01 +0100
Re: vocabulary "Qu0ll" <Qu0llSixFour@gmail.com> - 2014-04-27 19:53 +1000
Re: vocabulary lipska the kat <lipskathekat@example.com> - 2014-04-27 11:43 +0100
Re: vocabulary Jeff Higgins <jeff@invalid.invalid> - 2014-04-27 07:14 -0400
Re: vocabulary Jeff Higgins <jeff@invalid.invalid> - 2014-04-27 07:32 -0400
csiph-web