harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Prashanth K S <prashanth.jayash...@gmail.com>
Subject Re: strong type cast needed in java. (overriding enhancement.)
Date Mon, 27 Dec 2010 04:54:09 GMT
Hi,
  I believe that all these kinds of features i.e. base/sub class access
confusion, friend functions were all purposely avoided in JAVA to make life
simple for the programmers and to get rid of crashes that might possibly
occur on supporting the same. There isn't a strong business case for doing
so. The whole point of introducing JAVA is to allow programmers to
concentrate on the business (or the coding logic) logic and not to worry
about such factors.

   Good OO designs such as composition can be used instead of friend
functions. There are other design pattens that results in code which is
"open for extension but closed for modification".

-- 
Regards
Prashanth

On Fri, Dec 24, 2010 at 8:06 AM, hari ks <hari_tcs@yahoo.com> wrote:

> hi Jimmy,
>    java possibly may have added some capabilities of c++ in another way?.
> eg:
> friend classes in c++- java could have said:
>
> class A equals B{} 'equals classes' sharing even private variables.
>
> I will keep further posts to that blog itself, and not hitting this mailing
> list
> ..
>
> thanks & rgds,
> Hari
>
>
>
>
> ________________________________
> From: "Jimmy,Jing Lv" <firepure@gmail.com>
> To: dev@harmony.apache.org
> Sent: Thu, December 23, 2010 9:43:06 PM
> Subject: Re: strong type cast needed in java. (overriding enhancement.)
>
> Hi Hari,
>
>      I see it may be possible to avoid the checking and implement the
> strong type casting - however I am still wondering why shall we overcome
> the
> difficulty, build a complex checking in compling to make it happen? Java is
> not c/c++ and has its own style. So again what is the benefit we can see if
> we have this feature?
>
> 2010/12/23 hari ks <hari_tcs@yahoo.com>
>
> > c++:
> >    base *b=new base;
> >    sub *s=new sub;
> >    s ->base::foo();  // private instance variable of base has 0 or
> unknown
> > value while executing foo() method of base class..
> >
> > can't this be extended so as pass base class variable along with method
> > call?
> > may be something like
> > s -> base{i=20,j=11}::foo();// here i and j were private variables of
> > base..
> >
> > this concept could be implemented in java.
> >
> > thanks & rgds,
> > Hari
> >
> >
> >
> >
> > ________________________________
> > From: hari ks <hari_tcs@yahoo.com>
> > To: dev@harmony.apache.org
> > Sent: Thu, December 23, 2010 6:06:46 PM
> > Subject: Re: strong type cast needed in java. (overriding enhancement.)
> >
> > hi ,
> >
> > c++ allows more combinations between instructions(functions) and
> > data(variables)
> >
> > than java.
> > eg in c++:
> > base* b;
> > sub* s;  // sub extends base and both have method foo()..
> > b -> foo(); // will call base foo()
> > s -> foo(); // will call sub foo()
> > s ->base::foo(); // will call base foo()
> >
> > java didn't add this mostly -because functions in super class might
> access
> > 'private members' of super class  which there is no way populating in
> > subclass
> > object and throw Null Exception..
> > Yet again - if these specific functions in superclass that could be
> > accessed
> > from subclass were compile time checked as not to access any private
> > variable of
> >
> > super class, this feature may add meaning.
> >
> > There could be more better design than just preventing subclass not to
> > access
> > super class methods..
> >
> > thanks & rgds,
> > Hari
> >
> >
> >
> > ________________________________
> > From: "Jimmy,Jing Lv" <firepure@gmail.com>
> > To: dev@harmony.apache.org
> > Sent: Thu, December 23, 2010 3:34:51 PM
> > Subject: Re: strong type cast needed in java. (overriding enhancement.)
> >
> > Hi Hari,
> >
> >      I see there is no such mechanism for Java now. I suppose it may be
> due
> > to java single inheritance and dynamic bonding.
> >     Technically strong type casting is possible with bytecode instruction
> > or something, however I'd rather design it clear to avoid such invoking -
> > say, if you want A.foo(), create A a = new A(), or avoid overriding foo()
> > in
> > B. It sounds a syntax problem to invoke a parent method in a child class
> > instance while the method is already overrode.  It may have some problem
> > with strong type casting. For an example, if you have a public basic type
> > A,
> > which has an implemented method foo(), and then create some internal
> > implementation B, C, which C extends B and both of them override foo().
> > With
> > a factory of A you can get an object "a" which is really C instances,
> then
> > it will be hard to tell what can be invoked for a.super.foo()?
> >
> >     Sorry I don't catch you that what is the benefit do you think for
> > strong type casting on Java?
> >
> > 2010/12/23 hari ks <hari_tcs@yahoo.com>
> >
> > > I have put up a post here :
> > >
> > >
> >
> http://programparadigm.blogspot.com/2010/12/method-overriding-enhancements-strong.html
> >l
> > >
> > >l
> > >
> > >
> > > Suppose class B extends A.
> > > A a = new B();
> > > ((A)a).foo(); // still calls class B's foo() method.
> > >
> > > Can something like "a.super.foo();" method invocation be made possible.
> > Or
> > > ((A
> > > strong)a).foo();  should call A's foo() method with B's instance data.
> > >
> > > similar thing for C++.
> > >
> > > Is there a way to already do this?
> > >
> > > thanks & regards,
> > > Hari
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> > --
> >
> > Best Regards!
> >
> > Jimmy, Jing Lv
> >
> >
> >
> >
>
>
>
> --
>
> Best Regards!
>
> Jimmy, Jing Lv
>
>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message