定义一个抽象类Shape,成员有图形名称(name)和求面积的抽象方法Area(),利用继承产生子类三角形类Trangle类,圆Circle类,矩形Rectangle类。并分别实现计算面积的方法计算相应图形的面积。对于Trangle类要求能够实现修改三边,判断三边是否能够构成三角形,根据三边长计算面积的方法。
abstract class shape
{
String name;
abstract void Area();
}
class Trangle extends shape //三角形类
{ Trangle(){}
double sideA,sideB,sideC;
boolean boo;
public Trangle(double a,double b,double c)
{
sideA=a;sideB=b;sideC=c;
this.name="三角形";
if(a+b>c&&a+c>b&&b+c>a)
{
System.out.println("我是一个三角形");
boo=true;
}
else
{
System.out.println("我不是一个三角形");
boo=false;
}
}
public void Area()
{
if(boo)
{
double p=(sideA+sideB+sideC)/2.0;
double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
System.out.println(name+"面积是:"+area);
}
else
{
System.out.println("不是一个三角形,不能计算面积");
}
}
public void 修改三边(double a,double b,double c)
{
sideA=a;sideB=b;sideC=c;
if(a+b>c&&a+c>b&&b+c>a)
{
boo=true;
}
else
{
boo=false;
}
}
}
class Circle extends shape //圆类
{
double r;
Circle(double r)
{
this.r=r;this.name="圆";
}
public void Area()
{
System.out.println(name+"面积是:"+3.14*r*r);
}
}
class Rectangle extends shape //矩形类
{
double a,b;
Rectangle(double a,double b)
{
this.a=a;this.b=b;this.name="矩形";
}
public void Area()
{
System.out.println(name+"面积是:"+a*b);
}
}
class 图形1
{
public static void main(String[] args)
{
Trangle t=new Trangle(1,2,3);
t.Area();
t.修改三边(3,4,5);
t.Area();
Circle c=new Circle(2);
c.Area();
Rectangle r=new Rectangle(4,5);
r.Area();
}
}
对于上题目中的Shape类,改用接口来实现同样的功能
interface shape
{
final String name="图形";
void Area();
}
class Trangle implements shape
{
Trangle(){}
double sideA,sideB,sideC;
boolean boo;
public Trangle(double a,double b,double c)
{
sideA=a;sideB=b;sideC=c;
if(a+b>c&&a+c>b&&b+c>a)
{
System.out.println("我是一个三角形");
boo=true;
}
else
{
System.out.println("我不是一个三角形");
boo=false;
}
}
public void Area()
{
if(boo)
{
double p=(sideA+sideB+sideC)/2.0;
double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
System.out.println(name+"面积:"+area);
}
else
{
System.out.println("不是一个三角形,不能计算面积");
}
}
public void 修改三边(double a,double b,double c)
{
sideA=a;sideB=b;sideC=c;
if(a+b>c&&a+c>b&&b+c>a)
{
boo=true;
}
else
{
boo=false;
}
}
}
class Circle implements shape //圆类
{
double r;
Circle(double r)
{
this.r=r;
}
public void Area()
{
System.out.println(name+"面积是:"+3.14*r*r);
}
}
class Rectangle implements shape //矩形类
{
double a,b;
Rectangle(double a,double b)
{
this.a=a;this.b=b;
}
public void Area()
{
System.out.println(name+"面积是:"+a*b);
}
}
class A
{
public void t(shape s) //接口类型参数
{
s.Area(); //接口回调
}
}
class 图形2
{
public static void main(String[] args)
{
shape s;
s=new Trangle(3,4,5);
s.Area() ; //接口回调
A a=new A();
a.t(new Circle(2));
a.t(new Rectangle(3,4));
}
}