2. First Program
2
Jainul A. Musani
Class test1
{
public static void main(String s[])
{
System.out.println(“Good Morning…”);
}
}
3. Can we overload main method?
3
Jainul A. Musani
Normal Overloading
sum(int a, int b)
sum(double a, double b)
sum(int a, int b, int c)
4. Can we overload main method?
4
Jainul A. Musani
public class MyMainOverload
{
public static void main(Integer args)
{ S.o.p(“int Args in main() method ");
}
public static void main(char args)
{ S.o.p(“char Args main() method ");
}
//Original main() method
public static void main(String[] args)
{ S.o.p("Original main() method ");
}
}
5. Can we overload main method?
5
Jainul A. Musani
public class MyMainOverload
{
public static void main(Integer args)
{ S.o.p(“int Args in main() method ");
}
public static void main(char args)
{ S.o.p(“char Args main() method ");
}
//Original main() method
public static void main(String[] args)
{ S.o.p("Original main() method ");
}
new MyMainOverload();
new MyMainOverload.main(10);
new MyMainOverload.main(‘Z’);
}
6. Constructor returns a value but, what?
6
Jainul A. Musani
Constructor Types:
1. Default Constructor
2. Parameterized Constructor
Java constructor doesn't return any specific value,
which can directly affect the code.
A constructor is called by the memory allocation and
object initialization code at runtime.
The Constructor is more responsible for assigning
the initial values to the data members of the class.
A constructor returns the instance created by the new
keyword in our
7. Constructor returns a value but, what?
7
Jainul A. Musani
public class Emp {
int EmpNo;
String EmpName;
Emp(){
System.out.println("I am a Emp-Constructor");
}
public static void main(String[] args) {
Emp e1 = new Emp();
System. out. println(e1); // Emp@4dc63996
}
}
8. Singleton Class using private constructor
8
Jainul A. Musani
To create a class that can be instantiated
only once at a time.
Steps
1.Define the class constructor as private.
2.Create a static method that returns the object of
this class.
9. Singleton Class using private constructor
9
Jainul A. Musani
public class CAR{
private static CAR bmw = null;
public String msg;
private CAR() {}
public static CAR getAcar() {
If (bmw == null){
bmw = new CAR();
}
return bmw;
}
10. Singleton Class using private constructor
10
Jainul A. Musani
public static void main(String[] args) {
CAR mycar = CAR.getAcar();
mycar.msg = “My BMW is no.1";
CAR mycar2 = CAR.getAcar();
mycar2.msg = “My New BMW No.2";
CAR mycar3 = CAR.getAcar();
mycar3.msg = “My Vintage Car No. 3";
System.out.println(“Car 1
: "+mycar.msg);
System.out.println(“Car 2 : "+
mycar2.msg);
System.out.println(“Car 3 : "+
mycar3.msg);
11. Singleton Class using private constructor
11
Jainul A. Musani
OUTPUT:
Car 1 : My Vintage Car No. 3
Car 2 : My Vintage Car No. 3
Car 3 : My Vintage Car No. 3
12. Can constructor be private in Java?
12
Jainul A. Musani
Java allows to declare a constructor as
private.
Declare a constructor private by using
the private access specifier.
Note that if a constructor is declared
private, we are not able to create an
object of the class. Instead, we can use
this private constructor in Singleton
Design Pattern.
13. Can we create a program without main method?
13
Jainul A. Musani
Using STATIC Block:
class A{
static{
System.out.println("class without a main method");
System.exit(0);
}
}
This is valid till the Java 6 version. From Java 7 onwards the
compiler JVM will give you error message – main() method
missing.
14. Can main() method as Non-Static in java?
14
Jainul A. Musani
No.
Error will display
15. Multiple inheritance is not supported in java?
15
Jainul A. Musani
Ambiguity in the derived class.
ABC extends String – toString() method
override,
FLYER - makeFly() method
BIRD extends ABC, FLYER – doAnything()
method
ObjBird – can’t call the methods available in
ABC class (i.e. toString()) it will not able to
decide from which method it should invoke
from ABC or from FLYER?
16. Can We Override static method?
16
Jainul A. Musani
Overload – YES
Override – NO
BUT,
the method is written in derived class
Override – YES :
17. Can We Override static method?
17
Jainul A. Musani
Overload
public class Test {
public static void foo() {
System.out.println("Test.foo() called ");
}
public static void foo(int a) {
System.out.println("Test.foo(int) called ");
}
public static void main(String args[])
{
Test.foo();
Test.foo(10);
}
}
18. Can We Override static method?
18
Jainul A. Musani
Override
public class Test {
public static void foo() {
System.out.println("Test.foo() called ");
}
public static void foo() {// Compiler Error: cannot redefine foo()
System.out.println("Test.foo() called ");
}
public static void main(String args[])
{
Test.foo();
Test.foo(10);
}
}
19. Can We Override static method?
19
Jainul A. Musani
In Derived Class
class Base {
public static void display() {
System.out.println("Static or class
method from Base");
}
public void print() {
System.out.println("Non-static or Instance
method from Base");
}
}
20. Can We Override static method?
20
Jainul A. Musani
In Derived Class
class Derived extends Base {
public static void display() {
System.out.println("Static or class
method from Derived");
}
System.out.println("Non-static or Instance
method from Derived");
}
}
21. public class Test {
public static void main(String args[ ]) {
Base obj1 = new Derived();
obj1.display();
obj1.print();
}
}
Can We Override static method?
21
Jainul A. Musani
Static or class method from Base
Non-static or Instance method from
Derived
Output
In Derived Class
22. What is covariant return type?
22
Jainul A. Musani
class A1
{
A1 foo() {
return this;
}
void print(){
System.out.println(“Inside class A1”);
}
}
1
23. What is covariant return type?
23
Jainul A. Musani
class A2 extends A1
{
@Override
A2 foo() {
return this;
}
void print(){
System.out.println(“Inside class A2”);
}
}
2
24. What is covariant return type?
24
Jainul A. Musani
class A3 extends A2
{
@Override
A2 foo() {
return this;
}
@Override
void print(){
System.out.println(“Inside class A3”);
}
}
3
25. What is covariant return type?
25
Jainul A. Musani
public class CovariatEx
{
public static void main(String args[]) {
A1 obj1 = new A1();
obj1.foo().print() ‘Inside class A1’
A2 obj2 = new A2();
obj2.foo().print() ‘Inside class A2’
A3 obj3 = new A3();
obj3.foo().print() ‘Inside class A3’
}
}
4
26. What is covariant return type?
26
Jainul A. Musani
public class CovariatEx
{
public static void main(String args[]) {
A1 obj1 = new A1();
obj1.foo().print() ‘Inside class A1’
A2 obj2 = new A2();
((A2)obj2).foo().print() ‘Inside class A2’
A3 obj3 = new A3();
((A3)obj3).foo().print() ‘Inside class A3’
}
}
5
27. Why use instance initializer block?
27
Jainul A. Musani
static block v/s initializer block
initializer v/s constructor
super() calls only constructor not
initializer block but when before
constructor initializer block always calls.
So indirectly super() calls initializer
block.
28. initializer block
28
Jainul A. Musani
public class Bike
{
int speed;
Bike(){ S.o.p(“Bike Speed is : “ + speed); }
{ // initializer block
speed = 100;
}
public static void main(String args[]) {
Bike b1 = new Bike();
Bike b2 = new Bike();
}
}