为了账号安全,请及时绑定邮箱和手机立即绑定

课后练习的问题。求指导!

我不知道怎么把数据带进去...


1. 这个是父类的abstract。

package com.imooc;


public abstract class Shape {

    public abstract void perimeter();    

    public abstract void area();

}

2. 然后是子类的Rectangle。尝试了一下失败了。

package com.imooc;


public class Rectangle extends Shape {


Rectangle p1 = new Rectangle();

private int periSum(){

int length = 10;

int width = 5;

int pSum = (length + width) *2;

return pSum;

}


@Override

public void perimeter() {

// TODO Auto-generated method stub

     System.out.println("圆形的周长是:"+ p1.periSum());

}



@Override

public void area() {

// TODO Auto-generated method stub

     System.out.println("圆形的面积是:");

}


}

3. 接着是子类的Circle。

package com.imooc;


public class Circle extends Shape {


@Override

public void perimeter() {

// TODO Auto-generated method stub

       System.out.println("长方形的周长是:");

}


@Override

public void area() {

// TODO Auto-generated method stub

     System.out.println("长方形的面积是:");

}


}

4. 最后是Initial。

package com.imooc;


public class Initial {


public static void main(String[] args) {

// TODO Auto-generated method stub

    //计算周长

Shape per1 = new Rectangle();

    Shape per2 = new Circle();

    //求长方形的周长

    per1.perimeter();

    //求圆的周长

    per2.perimeter();

    //计算面积

    Shape ar1 = new Rectangle();

    Shape ar2 = new Circle();

    ar1.area();

    ar2.area();

}


}




正在回答

1 回答

你在

public class Rectangle extends Shape {

Rectangle p1 = new Rectangle();
private int periSum(){
int length = 10;
int width = 5;
int pSum = (length + width) *2;
return pSum;
}

建立了对象,然后又在initial里建立了对象,这样使用有问题

public void perimeter() {
// TODO Auto-generated method stub
     System.out.println("圆形的周长是:"+ p1.periSum());
}

你在initial中建立的对象没有去调用perimeter方法,因为你这个方法是使用p1这个对象调用periSum,建议你把Rectangel中的Rectangle p1 = new Rectangle();注释掉,然后把p1改成this,或者直接使用periSum这个方法。

你这里的主要问题就是你在initial中建立的对象,没有真正的用来调用periSum这个方法,实际调用这个方法的。另外还有一个问题,你在方法内部建立的变量并不是成员变量,这个变量并不会被你建立的方法是用。

所以你应该把int length,int width写在方法体外面,让他成为类成员变量。建议好好看看有关java类的内容。本人也是菜鸟,如有错误请见谅。

0 回复 有任何疑惑可以回复我~
#1

ilemon 提问者

好晕。。。。。虽然照你说的改对了。。。但是。。。后面你在说什么0.0
2015-05-19 回复 有任何疑惑可以回复我~
#2

apprentice1104 回复 ilemon 提问者

主要就是你对class的使用和理解不太熟悉,如果我说的是对的那么能麻烦你给个最优答案然后结贴吗?
2015-05-19 回复 有任何疑惑可以回复我~
#3

ilemon 提问者 回复 apprentice1104

可是还是不明白...
2015-05-19 回复 有任何疑惑可以回复我~
#4

apprentice1104 回复 ilemon 提问者

不明白就看看有关class的内容吧,你不能指望发这个帖子就弄清楚所有的知识,而且我觉得我已经讲的很详细了。
2015-05-19 回复 有任何疑惑可以回复我~
#5

ilemon 提问者

非常感谢!
2015-05-19 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530629    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

课后练习的问题。求指导!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信