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


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

Re: How to assign an object to another in it method?

Path csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From Andreas Leitgeb <avl@logic.at>
Newsgroups comp.lang.java.programmer
Subject Re: How to assign an object to another in it method?
Date Thu, 13 Jul 2017 17:19:47 -0000 (UTC)
Organization A noiseless patient Spider
Lines 55
Message-ID <slrnomfb4t.o2q.avl@logic.at> (permalink)
References <oi5q4t$1okn$1@gioia.aioe.org> <factory-20170619011810@ram.dialup.fu-berlin.de> <oi8mfs$ies$1@dont-email.me> <b0821ba8-d4ab-49e9-980f-3d2c772bfd9f@googlegroups.com> <bdd41c94-f8b7-4c7d-869f-5375e68da69e@googlegroups.com> <slrnol7802.o2q.avl@logic.at> <46334961-cc18-491f-828c-32e7401c7832@googlegroups.com> <ojc6ac$i54$1@gioia.aioe.org> <ojd820$gl5$1@dont-email.me> <ojddsm$8df$1@gioia.aioe.org> <slrnolkjtk.o2q.avl@logic.at> <ojet3n$ek2$1@gioia.aioe.org> <ojf0vn$7d0$1@jstuckle.eternal-september.org> <ojhgd6$bjn$1@gioia.aioe.org> <ojhi20$39m$1@jstuckle.eternal-september.org> <ojs006$1ls2$1@gioia.aioe.org> <ojs35k$hf4$1@jstuckle.eternal-september.org> <slrnoma4gp.o2q.avl@logic.at> <ok39b0$eic$1@jstuckle.eternal-september.org> <ok3qco$jk0$2@gioia.aioe.org> <ok3ujr$d31$1@jstuckle.eternal-september.org> <ok3v81$o5g$1@gioia.aioe.org> <ok63ib$krk$1@jstuckle.eternal-september.org> <slrnomehsu.o2q.avl@logic.at> <ok7vjd$uef$1@jstuckle.eternal-september.org>
Reply-To avl@logic.at
Injection-Date Thu, 13 Jul 2017 17:19:47 -0000 (UTC)
Injection-Info mx02.eternal-september.org; posting-host="891ec2ce37e0ba46fd2b2385f5ad4a6c"; logging-data="18361"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18/nhlKVMtat7miv/bhF38C"
User-Agent slrn/1.0.2 (Linux)
Cancel-Lock sha1:200spQ+xeo+5f2beSWZjTLRJIUM=
Xref csiph.com comp.lang.java.programmer:36902

Show key headers only | View raw


Jerry Stuckle <jstucklex@attglobal.net> wrote:
> On 7/13/2017 6:08 AM, Andreas Leitgeb wrote:
>> I brought up the problem(imho) of overriding methods with
>> changed default values for arguments, which in C++ are static
>> type matter (non-polymorphic).
> Incorrect.  Methods with default values are also polymorphic.

#include <stdio.h>

struct A { virtual void foo(int i = 42) { printf("A: %d\n", i); } };
struct B : public A { void foo(int i = 54) { printf("B: %d\n", i); } };

int main() {
      A a;  a.foo();
      B b;  b.foo();
      A *pa = &a;  pa->foo();
      pa = &b;     pa->foo();
}

Compiling and running it yields:
A: 42
B: 54
A: 42
B: 42

The last one polymorphically(because of the 'virtual') calls B::foo(int),
but passss it A::foo's default value, as the pointer is A-typed.

So, I still consider my claim as correct.

>> Ideally, a subclass should be allowed to "remove" methods in a way that the
>> compiler could preempt some mistakes: "If you already know you're dealing
>> with a Square, then rather use Square's setDimension(int length) instead of
>> the inherited setDimension(int,int)".  Obviously the compiler couldn't catch
>> cases like ((Rectangle)square).setDimensions(1,2), so not all runtime
>> errors can be prevented at compile time, but at least some.
>
> So what happens when you pass the derived object to a method expecting a
> base object?

Then it would end up running that "disabled" method, which will do whatever
is coded into it:  e.g. always throw an error, or spend some effort to
determine still-sensible calls, for which to do something sensible.

In C++ you can declare an override as private - if it was virtual within
the super class, it can still be called through super class, but not through
its own type.

In the example above, add a "private:" into B's body before void foo...,
and since the b.foo() call becomes invalid, comment it out. The last call
will still invoke the now private B::foo (and still with 42 as default).

I don't like the non-polymorphic default values of C++, but I do like that
in C++ a subclass *can* get rid of its inherited baggage.

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


Thread

How to assign an object to another in it method? parmenides <xparmenides@yahoo.com> - 2017-06-18 20:02 +0800
  Re: How to assign an object to another in it method? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-06-18 08:09 -0400
  Re: How to assign an object to another in it method? Robert Klemme <shortcutter@googlemail.com> - 2017-06-18 15:31 +0200
  Re: How to assign an object to another in it method? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-06-19 10:22 -0400
    Re: How to assign an object to another in it method? Eric Douglas <e.d.programmer@gmail.com> - 2017-06-19 08:13 -0700
      Re: How to assign an object to another in it method? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-06-19 11:53 -0400
        Re: How to assign an object to another in it method? Eric Douglas <e.d.programmer@gmail.com> - 2017-06-19 09:06 -0700
          Re: How to assign an object to another in it method? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-06-19 13:56 -0400
      Re: How to assign an object to another in it method? lewbloch@gmail.com - 2017-06-27 13:49 -0700
        Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-06-28 12:20 +0000
          Re: How to assign an object to another in it method? Eric Douglas <e.d.programmer@gmail.com> - 2017-06-28 05:51 -0700
            Re: How to assign an object to another in it method? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-06-28 14:03 -0400
            Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-02 21:23 -0400
              Re: How to assign an object to another in it method? Martin Gregorie <martin@address-in-sig.invalid> - 2017-07-03 10:59 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-03 08:38 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-03 14:04 +0000
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-03 10:39 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-03 16:28 +0000
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-03 16:52 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-03 22:04 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-03 23:15 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-04 21:46 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-04 22:18 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-08 21:13 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-08 22:12 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-11 17:56 +0000
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-11 15:40 -0400
                Re: How to assign an object to another in it method? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-11 13:49 -0700
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-11 17:41 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-11 20:27 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-11 21:43 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-11 21:49 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-12 17:20 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-13 10:08 +0000
                Re: How to assign an object to another in it method? Martin Gregorie <martin@address-in-sig.invalid> - 2017-07-13 11:35 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-13 08:14 -0400
                Re: How to assign an object to another in it method? Martin Gregorie <martin@address-in-sig.invalid> - 2017-07-13 14:29 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-13 13:47 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-13 18:09 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-13 15:01 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-13 19:19 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-13 15:39 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-13 16:49 +0000
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-13 10:24 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-13 17:19 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-13 21:17 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-14 06:40 +0000
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-14 14:26 -0400
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-15 14:36 +0000
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-14 12:10 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-14 14:40 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-14 14:51 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-14 21:05 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-14 21:06 -0400
                Re: How to assign an object to another in it method? lewbloch@gmail.com - 2017-07-14 14:44 -0700
                Re: How to assign an object to another in it method? Andreas Leitgeb <avl@logic.at> - 2017-07-12 16:23 +0000
                Re: How to assign an object to another in it method? Eric Douglas <e.d.programmer@gmail.com> - 2017-07-12 10:12 -0700
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-11 20:16 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-11 21:46 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-11 21:52 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-11 20:24 -0400
                Re: How to assign an object to another in it method? Jerry Stuckle <jstucklex@attglobal.net> - 2017-07-11 21:49 -0400
                Re: How to assign an object to another in it method? Arne Vajhøj <arne@vajhoej.dk> - 2017-07-11 21:55 -0400
                Re: How to assign an object to another in it method? Martin Gregorie <martin@address-in-sig.invalid> - 2017-07-03 12:37 +0000
                Re: How to assign an object to another in it method? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-07-03 11:34 -0400
                Re: How to assign an object to another in it method? Martin Gregorie <martin@address-in-sig.invalid> - 2017-07-03 17:28 +0000
  Re: How to assign an object to another in it method? v_borchert@despammed.com (Volker Borchert) - 2017-06-19 17:13 +0000
  Re: How to assign an object to another in it method? Eric Douglas <e.d.programmer@gmail.com> - 2017-06-19 13:40 -0700

csiph-web