java求抽象类shape_java 抽象类 Shape

定义一个抽象类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));

}

}


版权声明:本文为weixin_35772916原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。