Thursday, October 27, 2011

What ‘new operator’ in java does?

Ans: i. The new operator instantiates a class by allocating memory for a new object ii. The new operator also invokes the constructor. iii. The new operator requires a single, postfix argument: a call to a constructor. iv. The name of the constructor provides the name of the class to instantiate. v. The new operator returns a reference to the object it created. vi. This reference is usually assigned to a variable of the appropriate type.  

If you could click on some of the google ads you see on the right side. It will help me to run this blog and motivates me ;)

Difference between Constructor and Method in java

1.       Constructor is a special method of a class but can’t be invoked directly by method call.
Java doc. Says (A class contains constructors that are invoked to create objects from the class blueprint.)
Methods are member of a class.
2.       It is not a member of a class as it can neither be inherited nor invoked using dot (.) operator.
Dot (.) operator is used to invoke Non static methods via object and static methods via class name.
3.       It has no explicit return type.
It has explicit return type, if there is nothing to return, the return type must be void
4.       It has the same name as its class name.
Can have same name as its class name, but the existence of return type makes it a method (unfortunately looks like constructor).
5.       It is used to initialize the objects, members of object and then execute statements if any.
Used to execute statements.
6.       A no-argument, Default constructor is provided by compiler when no explicit constructor is there. In such case instance members are initialized with their default values (numeric data types are set to 0, char to ‘\0’ and reference variable to null).
Local variable must be initialized explicitly.
7.       If there is no this() as the first statement, super() will be there as first statement in the constructor.
‘this’ is implicitly invoked on all the member in non-static methods, but need explicit invocation in case of name confliction.
Syntax: this.x, this.go()
8.       The default constructor will call the default constructor of its super class due to presence of super() as its first statement.
‘super’ can be used to explicitly invoke member of super class (specially used either in case of name conflict or to call method of super class when overridden in sub-class )
 super.member: when name conflict
super.method(args if any) : when overriden

9.       A constructor can never be abstract or static.
A method is of two types defined (implemented) or undefined (abstract). The method implementation can be further categorized as static or non-static. An abstract method can’t be static or final.
10.   Can be specified as public, none (default), protected or private.
Access-specifier public, none (default), protected or private are applicable.
11.   Can’t be final, native, or synchronized. (Constructor can take only access specifier)
Can be final, native, static or synchronized.
12.   Can be invoked by either
a.       new ClassName()
b.      this(args if any)
c.       super(args if any)
d.      getInstance()
Can be invoked by Class name in case of static method or by object/this in case of non-static method.
If you could click on some of the google ads you see on the right side. It will help me to run this blog and motivates me ;)