问答详情
源自:10-3 Java 中的抽象类

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

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


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();

}


}




提问者:ilemon 2015-05-18 23:43

个回答

  • apprentice1104
    2015-05-19 00:57:50
    已采纳

    你在

    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类的内容。本人也是菜鸟,如有错误请见谅。