class CricketPlayersUsingInterfaces
{
public static void main(String s[])
{
StrongBatsmen sachin = new StrongBatsmen("Sachin", 250, 11324, 100, 125);
StrongWicketKeeper dhoni = new StrongWicketKeeper("Dhoni", 153, 6021, 120, 67);
StrongBatsmen shewag = new StrongBatsmen("Shewag", 110, 4341, 22, 40);
AllRounderBatsmen yuvraj = new AllRounderBatsmen("Yuvraj", 105, 6533, 15, 46);
StrongBatsmen kohli = new StrongBatsmen("Kohli", 75, 4003, 25, 60);
AllRounderBatsmen raina = new AllRounderBatsmen("Raina", 34, 2600, 12, 19);
AllRounderBatsmen rohit = new AllRounderBatsmen("Rohit", 25, 1500, 5, 9);
StrongBowler harbhajan = new StrongBowler("Harbhajan", 189, 1500, 320, 4);
StrongBowler zaheer = new StrongBowler("Zaheer", 150, 900, 220, 4);
StrongBowler umesh = new StrongBowler("Umesh", 25, 150, 105, 2);
AllRounderBowler ashwin = new AllRounderBowler("Aswin", 15, 200, 60, 2);
bowl(1, zaheer);
bowl(2, umesh);
bowl(3, ashwin);
bowl(4, yuvraj);
bowl(5, raina);
}
public static void bowl(int overNumber, IBowler iBowler)
{
System.out.println("Bowling over " + overNumber);
System.out.println("--------------------------");
iBowler.bowlYorkers();
iBowler.takeWickets();
}
}
abstract class Player
{
String name;
int matchesPlayed;
int runsScored;
Player(String name, int matchesPlayed, int runsScored)
{
this.name = name;
this.matchesPlayed = matchesPlayed;
this.runsScored = runsScored;
}
public void bat()
{
}
public void makeSomeRuns()
{
}
void print()
{
System.out.print(name + " played " + matchesPlayed + " matches and scored " + runsScored + " runs.");
}
}
class StrongBatsmen extends Player implements IBatsmen
{
int numberOfCenturies;
int numberOfHalfCenturies;
StrongBatsmen(String name, int matchesPlayed, int runsScored, int numberOfCenturies, int numberOfHalfCenturies)
{
super(name, matchesPlayed, runsScored);
this.numberOfCenturies = numberOfCenturies;
this.numberOfHalfCenturies = numberOfHalfCenturies;
}
public void openInnings()
{
}
public void makeCentury()
{
}
public void makeHalfCentury()
{
}
void print()
{
super.print();
System.out.print(" He is a strong batsmen and made " + numberOfCenturies + " centuries and " + numberOfHalfCenturies + " half centuries.");
}
}
class StrongBowler extends Player implements IBowler
{
int numberOfWickets;
int numberOf5WicketInnings;
StrongBowler(String name, int matchesPlayed, int runsScored, int numberOfWickets, int numberOf5WicketInnings)
{
super(name, matchesPlayed, runsScored);
this.numberOfWickets= numberOfWickets;
this.numberOf5WicketInnings = numberOf5WicketInnings;
}
public void openInnings()
{
}
public void bowlYorkers()
{
System.out.println("Strong Bowler " + name + " is bowling yorkers.");
}
public void takeWickets()
{
System.out.println("Strong Bowler " + name + " is taking wickets.");
}
void print()
{
super.print();
System.out.print(" He is also a good bowler and has taken " + numberOfWickets + " wickets. He has " + numberOf5WicketInnings + " 5WI(5-Wicket Innings) in his account.");
}
}
class StrongWicketKeeper extends Player implements IKeeper
{
int numberOfCatches;
int numberOfStumpings;
StrongWicketKeeper(String name, int matchesPlayed, int runsScored, int numberOfCatches, int numberOfStumpings)
{
super(name, matchesPlayed, runsScored);
this.numberOfCatches = numberOfCatches;
this.numberOfStumpings = numberOfStumpings;
}
public void keepWickets()
{
}
public void stumpBatsmen()
{
}
public void makeAppeals()
{
}
void print()
{
super.print();
System.out.print(" He also keeps the wickets and has " + numberOfCatches + " catches and " + numberOfStumpings + " stumpings in his account.");
}
}
class AllRounderBatsmen extends StrongBatsmen implements IBowler
{
AllRounderBatsmen(String name, int matchesPlayed, int runsScored, int numberOfCenturies, int numberOfHalfCenturies)
{
super(name, matchesPlayed, runsScored, numberOfCenturies, numberOfHalfCenturies);
}
public void openInnings()
{
}
public void bowlYorkers()
{
System.out.println("All Rounder Batsmen " + name + " is bowling yorkers.");
}
public void takeWickets()
{
System.out.println("All Rounder Batsmen " + name + " is taking wickets.");
}
}
class AllRounderBowler extends StrongBowler implements IBatsmen
{
AllRounderBowler(String name, int matchesPlayed, int runsScored, int numberOfWickets, int numberOf5WicketInnings)
{
super(name, matchesPlayed, runsScored, numberOfWickets, numberOf5WicketInnings);
}
public void openInnings()
{
}
public void makeCentury()
{
}
public void makeHalfCentury()
{
}
}
interface IBatsmen
{
void bat();
void makeSomeRuns();
void openInnings();
void makeCentury();
void makeHalfCentury();
}
interface IBowler
{
void openInnings();
void bowlYorkers();
void takeWickets();
}
interface IKeeper
{
void keepWickets();
void stumpBatsmen();
void makeAppeals();
}
interface ICaptain
{
void selectTeam();
void setField();
}
Bowling over 1
--------------------------
Strong Bowler Zaheer is bowling yorkers.
Strong Bowler Zaheer is taking wickets.
Bowling over 2
--------------------------
Strong Bowler Umesh is bowling yorkers.
Strong Bowler Umesh is taking wickets.
Bowling over 3
--------------------------
Strong Bowler Aswin is bowling yorkers.
Strong Bowler Aswin is taking wickets.
Bowling over 4
--------------------------
All Rounder Batsmen Yuvraj is bowling yorkers.
All Rounder Batsmen Yuvraj is taking wickets.
Bowling over 5
--------------------------
All Rounder Batsmen Raina is bowling yorkers.
All Rounder Batsmen Raina is taking wickets.
Here we have declared one abstract class Player
, four interfaces IBatsmen
, IBowler
, IKeeper
, ICaptain
and classes StrongBatsmen
, StrongBowler
, StrongWicketKeeper
, AllRounderBatsmen
, AllRounderBowler
. In the main method we have created various players and used the bowl
method to bowl using a StrongBowler
or AllRounderBatsmen
or AllRounderBowler
. As long as the class implements the interface IBowler
, that class's object can be passed to the bowl
method. That is the reason we were able to bowl using zaheer
, umesh
, aswin
, yuvraj
and raina
who may be a StrongBowler
or AllRounderBatsmen
or AllRounderBowler
.
void bat(int position, IBatsmen iBatsmen)
in the main method and pass sachin
, kohli
, yuvraj
, aswin
, shewag
as parameters. Don't forget to put some print statements in the methods makeCentury
and makeHalfCentury
to see the results.WicketKeeperCaptain
which extends from StrongWicketKeeper
and implements the interface ICaptain
. Change dhoni
from StrongWikcetKeeper
to WicketKeeperCaptain
and call methods like setField()
, selectTeam()
.