Q. Create an abstract class shape. Derive three classes sphere, cone and cylinder from it. Calculate area and volume of all (use method overriding)
Program:
Program:
import java.io.*; abstract class Shape{ protected double s1,s2; public Shape(double s1, double s2){ this.s1 = s1; this.s2 = s2; } public abstract double calcArea(); public abstract double calcVolume(); } class Sphere extends Shape{ public Sphere(double radius){ super(radius,0); } public double calcArea(){ return 4*Math.PI*s1*s1; } public double calcVolume(){ return 4*Math.PI*Math.pow(s1,3)/3; } } class Cone extends Shape{ public Cone(double radius, double height){ super(radius,height); } public double calcArea(){ return Math.PI*s1*(s1+ Math.sqrt(s1*s1+s2*s2)); } public double calcVolume(){ return Math.PI*s1*s1*s2/3; } } class Cylinder extends Shape{ public Cylinder(double radius, double height){ super(radius,height); } public double calcArea(){ return 2*Math.PI*s1*(s1+s2); } public double calcVolume(){ return Math.PI*s1*s1*s2; } } class ShapeDemo{ public static void main(String args[]) throws Exception{ BufferedReader br = new BufferedReader( new InputStreamReader( System.in)); Shape s = null; double r=0,h=0,l=0,b=0; while(true){ System.out.print("1.Sphere"+ "\n2.Cone"+ "\n3.Cylinder"+ "\n4.Exit"+ "\nEnter your choice (1-4):"); int ch = Integer.parseInt(br.readLine()); switch(ch){ case 1: System.out.print("Enter sphere radius:"); r=Double.parseDouble(br.readLine()); s = new Sphere(r); break; case 2: System.out.print("Enter cone radius:"); r=Double.parseDouble(br.readLine()); System.out.print("Enter cone height:"); h=Double.parseDouble(br.readLine()); s = new Cone(r,h); break; case 3: System.out.print("Enter cylinder radius:"); r=Double.parseDouble(br.readLine()); System.out.print("Enter cylinder height:"); h=Double.parseDouble(br.readLine()); s = new Cylinder(r,h); break; case 4: System.exit(0); } System.out.println("Area="+s.calcArea()+ "\nVolume="+s.calcVolume()); } } }
0 Comments