You are on page 1of 4

//Calling sequence of constructors

class GrandFather
{
GrandFather()
{
System.out.println("This is GrandFather");
}
}
class Father extends GrandFather
{
Father()
{
System.out.println("This is Father");
}
}
class Child extends Father
{
Child()
{
System.out.println("This is Child");
}
}
class CallConstructor
{
public static void main(String args[])
{
Child roger = new Child();
}
}

Program 2.23 Calling sequence of constructors

//Method Overriding
class Maths
{
int var1, var2, var3;
Maths(int x, int y)
{
var1 = x;
var2 = y;
}
void calculate() //statement1
{
var3 = var1 + var2;
System.out.println("Addition : "+var3);
}
}
class Arithmetic extends Maths
{
Arithmetic(int x,int y)
{
super(x,y);
}
void calculate() //statement2
{
1
var3 = var1 - var2;
System.out.println("Subtraction : "+var3);
}
}
class OverRiding
{
public static void main(String args[])
{
Arithmetic a = new Arithmetic(30,18);
a.calculate(); //statement3
}
}
Program 2.24 Method Overriding

//Dynamic method dispatch


class Principal
{
void message()
{
System.out.println("This is Principal");
}
}
class Professor extends Principal
{
void message()
{
System.out.println("This is Professor");
}
}
class Lecturer extends Professor
{
void message()
{
System.out.println("This is Lecturer");
}
}
class Dynamic
{
public static void main(String args[])
{
Principal x = new Principal();
Professor y = new Professor();
Lecturer z = new Lecturer();
Principal ref; //reference variable of super class

ref = x; //statement1
ref.message();

ref = y; //statement2
ref.message();

ref = z; //statement3
ref.message();
}
}
2
Program 2.25 Dynamic method dispatch

//Practical application of dynamic method


class Square
{
int side,val;
Square() {}
Square(int x)
{
side = x;
}
void area()
{
val = side * side;
System.out.println("Square side : "+side);
System.out.println("Square area : "+val);
}
}
class Rectangle extends Square
{
int len, wid, val;
Rectangle(int x,int y)
{
len = x;
wid = y;
}
void area()
{
val = len * wid;
System.out.println("Rectangle length: "+len);
System.out.println("Rectangle width : "+wid);
System.out.println("Rectangle area : "+val);
}
}
class Circle extends Square
{
float rad, val;
Circle(float x)
{
rad = x;
}
void area()
{
val = 3.14f * rad * rad;
System.out.println("Circle radius : "+rad);
System.out.println("Circle area : "+val);
}
}
class DynamicMethod
{
public static void main(String args[])
{
Square s = new Square(18);
Rectangle r = new Rectangle(5,26);
Circle c = new Circle(14.20f);
3
Square ref;

ref = s;
ref.area();

ref = r;
ref.area();

ref = c;
ref.area();
}
}
Program 2.26 Example of dynamic method dispatch

//Abstract class and method


abstract class Maths
{
int var1, var2, var3;
abstract void calculate();
void addition()
{
var3 = var1 + var2;
System.out.println("Addition : "+var3);
}
}
class Arithmetic extends Maths
{
Arithmetic(int x,int y)
{
var1 = x;
var2 = y;
}
void calculate()
{
var3 = var1 - var2;
System.out.println("Subtraction : "+var3);
}
}
class AbstractClass
{
public static void main(String args[])
{
Arithmetic a = new Arithmetic(30,18);
a.calculate();
a.addition();
}
}
Program 2.27 Using abstract class and method

You might also like