Wednesday, June 16, 2010

Abstract classes in JAVA..

Can abstract classes exist in JAVA without any abstract methods ?

The answer is yes. It made me curious as to why it was made technically possible in JAVA, while in C++ it is not the case [An abstract class must contain at least one pure virtual function ].

While it is a rare thing to happen and such a design should always be questioned to see if it is the right thing to do, one specific case where it is justified could be :

The abstract class partially implements an interface, with the intention that its subclasses must complete the interface. To take a slightly contrived motoring analogy, a Chassis class may partially implement a Vehicle interface and provide a set of core methods from which a range of concrete Vehicle types are extended. Chassis is not a viable implementation of a Vehicle in its own right, so a concrete Car subclass would have to implement interface methods for functional wheels, engine and bodywork.

from http://www.codestyle.org/java/faq-Abstract.shtml#whynoabstract !

Sunday, June 13, 2010

Tail Recursion..

Was going through http://saicharan.in/blog/2010/05/binary-search-tree/ when I landed on tail recursion concept.

Have seen code like this before, but have not really noticed the difference between recursive and tail recursive code.

Tail Recursive code brings in lot of efficiency by drastically reducing the amount of stack space used. look up http://en.wikipedia.org/wiki/Tail_recursion !

Thursday, June 10, 2010

Garbage Collector in C++..

Why isn't there a garbage collector in C++, or why hasn't been added... this sure makes a interesting topic to know more about - here i found a fair explanation on the subject.

http://stackoverflow.com/questions/147130/why-doesnt-c-have-a-garbage-collector

Wednesday, June 9, 2010

Floating Point Arithmatic..

Did you ever face something like this : X, and Y are two floating point numbers. You print their values and they are exactly same. and then you write a simple logic like this..

if(x!=y) {

printf("x and y are not equal) ;

}

and it prints that x and y are not equal ;-) Apparantly it happens often. and if you wondered why
the following links might help you.

Its all got to do with floating point numbers..

http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

http://stackoverflow.com/questions/588004/is-javascripts-math-broken

http://dlc.sun.com/pdf/800-7895/800-7895.pdf

Tuesday, June 8, 2010

what is serialVersionUID ?

Everytime you write a class that implements serializable interface the IDE shows a warning asking to add serialversionUID, I wondered why couple of times but looked it up to find the reasons..

Below is a good link that explains why... the point to note is serialVersionUID is an exception to the rule that “static fields don’t get serialized”

http://www.javablogging.com/what-is-serialversionuid/