ilemon
2015-05-18 23:43
我不知道怎么把数据带进去...
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();
}
}
你在
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类的内容。本人也是菜鸟,如有错误请见谅。
Java入门第二季 升级版
530715 学习 · 6091 问题
相似问题