Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #16296

Re: @Override

From Eric Sosman <esosman@ieee-dot-org.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: @Override
Date 2012-07-23 23:47 -0400
Organization A noiseless patient Spider
Message-ID <jul5se$5kr$1@dont-email.me> (permalink)
References <75036e8b-8b5f-4ea4-aef7-c063249f5707@googlegroups.com> <jukcik$t0m$1@dont-email.me> <500de50a$0$289$14726298@news.sunsite.dk> <jul0hd$dl0$1@dont-email.me> <500e0f31$0$282$14726298@news.sunsite.dk>

Show all headers | View raw


On 7/23/2012 10:57 PM, Arne Vajhøj wrote:
> On 7/23/2012 10:16 PM, Eric Sosman wrote:
>> On 7/23/2012 7:58 PM, Arne Vajhøj wrote:
>>> On 7/23/2012 4:35 PM, Eric Sosman wrote:
>>>> On 7/23/2012 2:30 PM, bob smith wrote:
>>>>> Is it really necessary to write @Override when you override or is this
>>>>> just "a good thing"?
>>>>
>>>>      Two benefits of @Override appear to me, one from its presence
>>>> and one from its absence:
>>>>
>>>>      - If you write @Override and then misspell the method name or
>>>>        mess up the parameter list, Java will say "Hey, wait: There's
>>>>        nothing in the superclass with this signature; what do you
>>>>        think you're doing?"  And then you'll say "Oops!" and fix
>>>>        the problem, instead of wondering why your "overriding" method
>>>>        doesn't seem to work.
>>>>
>>>>      - If you write a method and your IDE starts suggesting that you
>>>>        ought to tag it with @Override, you'll be alerted that you've
>>>>        overridden something you didn't intend to.[*]
>>>>
>>>>      Two benefits; that's all I see.  Hence, like indentation and
>>>> Javadoc comments, not "really necessary" ...
>>>
>>> I see the biggest benefits being the documentation.
>>>
>>> It can be important to know that ones method may be called
>>> by the super class.
>>>
>>> And all arguments seems related to extends not implements, so
>>> I m not convinced that extending it to interface methods was
>>> wise.
>>
>>     A separate @Implements annotation instead of @Override might
>> have been better for interfaces.  But what should one do about
>> abstract methods in abstract superclasses?  Are those @Override
>> or @Implements, or maybe @Concretizes?  And why should the class
>> with the actual implementation care about the distinction?  And
>> what about concrete methods *intended* to be overridden, as in
>> MouseAdapter?  @ProFormaOverrides?
>>
>>      Looks like fodder for a "whichness of the why" debate.
>
> I think abstract methods should be treated like other methods in
> classes.
>
> The abstract class could later introduce an implementation.
>
> We know that the interface will never.

     Ah, but what about

	abstract class Super implements ActionListener {
	    protected void helperMethod() { ... }
	    ...  // maybe an actionPerformed() here, maybe not
	}

	class NowWhat extends Super {
	    @WhatAnnotationGoesHere  // ?
	    public void actionPerformed(ActionEvent evt) {
	       ...
	    }
	}

In the NowWhat class, does actionPerformed() "implement" the
method required by the ActionListener interface, or does it
"concretize" the abstract actionPerformed() method of the Super
class?  Or does it "override" Super's concrete actionPerformed()
method (not shown)?  What if Super explicitly declares an abstract
actionPerformed() method?

     More to the point, is the distinction useful?  No, let's
"concretize" that question: Can you suggest a scenario in which
it would be helpful to distinguish among different flavors of
overriding:

     - Implement a method of an interface the class `implements'

     - Implement a method of a superinterface of an interface
       the class `implements'

     - Implement a method of an interface an abstract superclass
       `implements' but leaves abstract

     - Implement a method explicitly declared as abstract by an
       abstract superclass

     - Replace a superclass' concrete implementation

At the risk of dating myself (again), where's the beef?

-- 
Eric Sosman
esosman@ieee-dot-org.invalid

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

@Override bob smith <bob@coolfone.comze.com> - 2012-07-23 11:30 -0700
  Re: @Override Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2012-07-23 20:52 +0200
  Re: @Override markspace <-@.> - 2012-07-23 11:54 -0700
    Re: @Override Lew <lewbloch@gmail.com> - 2012-07-23 13:05 -0700
    Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-23 19:54 -0400
  Re: @Override "John B. Matthews" <nospam@nospam.invalid> - 2012-07-23 15:56 -0400
    Re: @Override Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2012-07-23 14:19 -0700
      Re: @Override rossum <rossum48@coldmail.com> - 2012-07-24 13:09 +0100
        Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-24 21:29 -0400
      Re: @Override Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-07-24 09:04 -0400
  Re: @Override Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-07-23 16:35 -0400
    Re: @Override Lew <lewbloch@gmail.com> - 2012-07-23 13:59 -0700
      Re: @Override Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2012-07-23 23:40 +0200
        Re: @Override Lew <lewbloch@gmail.com> - 2012-07-23 14:51 -0700
          Re: @Override Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2012-07-24 00:08 +0200
            Re: @Override Lew <lewbloch@gmail.com> - 2012-07-23 16:57 -0700
      Re: @Override Robert Klemme <shortcutter@googlemail.com> - 2012-07-24 09:46 +0200
    Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-23 19:58 -0400
      Re: @Override Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-07-23 22:16 -0400
        Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-23 22:57 -0400
          Re: @Override Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-07-23 23:47 -0400
            Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-24 21:35 -0400
    Re: @Override Jim Janney <jjanney@shell.xmission.com> - 2012-07-26 20:00 -0600
  Re: @Override Gene Wirchenko <genew@ocis.net> - 2012-07-23 14:01 -0700
  Re: @Override Silvio Bierman <silvio@moc.com> - 2012-07-24 00:22 +0200
    Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-23 19:53 -0400
      Re: @Override Gene Wirchenko <genew@ocis.net> - 2012-07-23 18:59 -0700
      Re: @Override Silvio Bierman <silvio@moc.com> - 2012-07-24 22:57 +0200
        Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-24 21:24 -0400
    Re: @Override Robert Klemme <shortcutter@googlemail.com> - 2012-07-24 15:36 +0200
      Re: @Override Gene Wirchenko <genew@ocis.net> - 2012-07-24 09:54 -0700
      Re: @Override Silvio Bierman <silvio@moc.com> - 2012-07-24 23:14 +0200
        Re: @Override Robert Klemme <shortcutter@googlemail.com> - 2012-07-25 07:57 +0200
          Re: @Override Gene Wirchenko <genew@ocis.net> - 2012-07-25 10:34 -0700
          Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-25 14:54 -0400
            Re: @Override Wanja Gayk <brixomatic@yahoo.com> - 2012-07-30 14:42 +0200
      Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-24 21:20 -0400
        Re: @Override Lew <noone@lewscanon.com> - 2012-07-25 06:26 -0700
          Re: @Override Arne Vajhøj <arne@vajhoej.dk> - 2012-07-25 17:16 -0400
  Re: @Override Roedy Green <see_website@mindprod.com.invalid> - 2012-07-23 20:59 -0700
  Re: @Override Wanja Gayk <brixomatic@yahoo.com> - 2012-07-24 16:06 +0200

csiph-web