黑马程序员技术交流社区

标题: 抽象类的问题 求大神解答。 [打印本页]

作者: Do、    时间: 2016-3-9 11:59
标题: 抽象类的问题 求大神解答。
题目:创建一个抽象类shape,这个类里面包含3个成员变量和两个抽象方法,
抽象方法分别是求周长和面积,创建两个子类圆、长方形,在子类当中,实现抽象方法,
求出圆和长方形的面积和周长,然后再定一个主类Test,通过实例化对象输出长方形和圆的面积和周长
//测试类
public class Test {
         public static void main(String[] args) {
          Circle circle = new Circle();
          circle.setd(4);
          System.out.println("圆的面积是" + circle.doublearea());
          Rect rect = new Rect();
          rect.setLenWid(3, 4);
          System.out.println("矩形的面积是" + rect.doublearea());
         }

        }
//抽象类
public abstract class Shape {
        abstract double doublearea();
}

// 圆类
class Circle extends Shape {
        public double r;

        double doublearea() {
                return 3.14 * r * r;
        }

        void setd(double R) {
                r = R;
        }
}

// 矩形类
class Rect extends Shape {
        double length;

        double width;

        double doublearea() {

                return length * width;
        }

        void setLenWid(double Length, double Width) {
                length = Length;
                width = Width;
        }
}


以上是求面积的答案,但是还要求周长  又怎么做呢    在那里嵌入求周长的代码比较好呢?
还有就是    //圆类中的        void setd(double R) {
                r = R;    这些代码是什么意思 ?
               // 矩形类中的
               void setLenWid(double Length, double Width) {
                length = Length;
                width = Width;
             这些代码又是什么意思?

作者: Do、    时间: 2016-3-9 12:01
在线等    急。。。。。。。。。。。。。。
作者: Do、    时间: 2016-3-9 12:36
都没人吗?
作者: liu1097974712    时间: 2016-3-9 12:45
R是传进来的参数,赋给园里面的半径,就相当于你给我一个R,我函数里面的r半径就是你给的,下面的赋值语句一个意思,求
作者: Do、    时间: 2016-3-9 12:47
liu1097974712 发表于 2016-3-9 12:45
R是传进来的参数,赋给园里面的半径,就相当于你给我一个R,我函数里面的r半径就是你给的,下面的赋值语句 ...

那void setd(double R)是什么意思呢
作者: liu1097974712    时间: 2016-3-9 12:51
周长写在各自的类里面,矩形
double cir()
{
     return (length+width)*2;//圆返回:return 3.14*2*r;
}
作者: Do、    时间: 2016-3-9 12:53
liu1097974712 发表于 2016-3-9 12:51
周长写在各自的类里面,矩形
double cir()
{

嗯,好的  谢谢  我去摸索一下
作者: liu1097974712    时间: 2016-3-9 12:56
Do、 发表于 2016-3-9 12:47
那void setd(double R)是什么意思呢

是圆里面的方法呀(函数),没返回值,接受一个你给的值,就可以带到下面的圆公式里面运算返回了;
比如,setd(3);就是给他一个半价为3的值,下面就可以带入运算了
作者: Do、    时间: 2016-3-9 13:05
liu1097974712 发表于 2016-3-9 12:56
是圆里面的方法呀(函数),没返回值,接受一个你给的值,就可以带到下面的圆公式里面运算返回了;
比如 ...

嗯,好,明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2