用java编程。利用多态编程创建一个Square类,实现求三角形,正方形和圆形的面积
方法:抽象一个共享父类,定义一个函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积。...
方法:抽象一个共享父类,定义一个函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积。
展开
展开全部
首先要声明一下LZ问题描述的有点问题,
Square的意思是正方形,
所以应该是正方形(Square),三角形(Triangle),圆(Circle)来继承图形(Shape)来实现多态,即利用多态编程创建一个Shape类.
补充:1楼,不知道你的多态体现在哪里????
进入正题...
在同一个包下分别建立以下五个类,运行TestShape类即可!
// 抽象类--图形--------------------------------------
public abstract class Shape {
//抽象方法取得图形的面积
public abstract double getArea();
}
// 正方形继承图形的类-------------------------------
public class Square extends Shape {
// 正方形的边长
private double height = 0;
// 构造函数
public Square(double height) {
this.height = height;
}
//@Override
public double getArea() {
return (this.height * this.height); // Math.pow(this.height , 2);
}
}
//圆继承图形的类-------------------------
public class Circle extends Shape {
// 圆的半径
private double r = 0;
// 圆周率
private final static double PI = 3.14;
// 构造函数
public Circle(double r) {
this.r = r;
}
@Override
public double getArea() {
return (PI * r * r);
}
}
//三角形继承图形的类------------------------------
public class Triangle extends Shape {
// 三角形的边1
private double a = 0;
// 三角形的边2
private double b = 0;
// 三角形的边3
private double c = 0;
// 三角形的高
private double h = 0;
// 构造函数,已知三角形的高和底
public Triangle(double a, double h) {
this.a = a;
this.h = h;
}
// 构造函数,已知三角形的三边长度
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
if (h == 0) {
// 根据海伦公式求三角形的面积
double s = (a+b+c)/2;
return Math.pow(s*(s-a)*(s-b)*(s-c), 0.5);
} else {
// 普通公式
return ( a * h / 2);
}
}
}
//测试类--------------------------------------------
public class TestShape {
public static void main(String[] args) {
// 构造一个边长为3的正方形
Shape square = new Square(3) ;
// 构造一个半径为2的圆
Shape circle = new Circle(2) ;
// 构造一个边长分别为3,4,5的三角形(根据勾股定理知道是直角三角形)
Shape triangle1 = new Triangle(3, 4, 5);
// 构造一个高和底分别为3,4的三角形
Shape triangle2 = new Triangle(3, 4);
System.out.println(square.getArea());
System.out.println(circle.getArea());
System.out.println(triangle1.getArea());
System.out.println(triangle2.getArea());
}
}
测试结果:
9.0
12.56
6.0
6.0
好的答案不仅能够帮助LZ解决问题,还能够给阅读者带来收益!
Square的意思是正方形,
所以应该是正方形(Square),三角形(Triangle),圆(Circle)来继承图形(Shape)来实现多态,即利用多态编程创建一个Shape类.
补充:1楼,不知道你的多态体现在哪里????
进入正题...
在同一个包下分别建立以下五个类,运行TestShape类即可!
// 抽象类--图形--------------------------------------
public abstract class Shape {
//抽象方法取得图形的面积
public abstract double getArea();
}
// 正方形继承图形的类-------------------------------
public class Square extends Shape {
// 正方形的边长
private double height = 0;
// 构造函数
public Square(double height) {
this.height = height;
}
//@Override
public double getArea() {
return (this.height * this.height); // Math.pow(this.height , 2);
}
}
//圆继承图形的类-------------------------
public class Circle extends Shape {
// 圆的半径
private double r = 0;
// 圆周率
private final static double PI = 3.14;
// 构造函数
public Circle(double r) {
this.r = r;
}
@Override
public double getArea() {
return (PI * r * r);
}
}
//三角形继承图形的类------------------------------
public class Triangle extends Shape {
// 三角形的边1
private double a = 0;
// 三角形的边2
private double b = 0;
// 三角形的边3
private double c = 0;
// 三角形的高
private double h = 0;
// 构造函数,已知三角形的高和底
public Triangle(double a, double h) {
this.a = a;
this.h = h;
}
// 构造函数,已知三角形的三边长度
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
if (h == 0) {
// 根据海伦公式求三角形的面积
double s = (a+b+c)/2;
return Math.pow(s*(s-a)*(s-b)*(s-c), 0.5);
} else {
// 普通公式
return ( a * h / 2);
}
}
}
//测试类--------------------------------------------
public class TestShape {
public static void main(String[] args) {
// 构造一个边长为3的正方形
Shape square = new Square(3) ;
// 构造一个半径为2的圆
Shape circle = new Circle(2) ;
// 构造一个边长分别为3,4,5的三角形(根据勾股定理知道是直角三角形)
Shape triangle1 = new Triangle(3, 4, 5);
// 构造一个高和底分别为3,4的三角形
Shape triangle2 = new Triangle(3, 4);
System.out.println(square.getArea());
System.out.println(circle.getArea());
System.out.println(triangle1.getArea());
System.out.println(triangle2.getArea());
}
}
测试结果:
9.0
12.56
6.0
6.0
好的答案不仅能够帮助LZ解决问题,还能够给阅读者带来收益!
展开全部
写了个长方形的类 其他的照葫芦画瓢好了
^_^
public class Square
{
private double width;
private double height;
public Square()
{
width=0.0;
height=0.0;
}
public double getWidth()
{return width;}
public void setWidth(double newwidth)
{width=newwidth;}
public double getHeight()
{return height;}
public void setHeight(double newheight)
{height=newheight;}
public double computeArea()
{return width*height;}
}
public class TestSquare
{
public static void main(String[] args)
{
Square t=new Square();
t.setWidth(1);
t.setHeight(2);
System.out.println("width="+t.getWidth());
System.out.println("height="+t.getHeight());
System.out.println("area="+t.computeArea());
}
}
^_^
public class Square
{
private double width;
private double height;
public Square()
{
width=0.0;
height=0.0;
}
public double getWidth()
{return width;}
public void setWidth(double newwidth)
{width=newwidth;}
public double getHeight()
{return height;}
public void setHeight(double newheight)
{height=newheight;}
public double computeArea()
{return width*height;}
}
public class TestSquare
{
public static void main(String[] args)
{
Square t=new Square();
t.setWidth(1);
t.setHeight(2);
System.out.println("width="+t.getWidth());
System.out.println("height="+t.getHeight());
System.out.println("area="+t.computeArea());
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询