課后練習(xí)的問題。求指導(dǎo)!
我不知道怎么把數(shù)據(jù)帶進去...
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();
}
}
2015-05-19
你在
建立了對象,然后又在initial里建立了對象,這樣使用有問題
你在initial中建立的對象沒有去調(diào)用perimeter方法,因為你這個方法是使用p1這個對象調(diào)用periSum,建議你把Rectangel中的Rectangle p1 = new Rectangle();注釋掉,然后把p1改成this,或者直接使用periSum這個方法。
你這里的主要問題就是你在initial中建立的對象,沒有真正的用來調(diào)用periSum這個方法,實際調(diào)用這個方法的。另外還有一個問題,你在方法內(nèi)部建立的變量并不是成員變量,這個變量并不會被你建立的方法是用。
所以你應(yīng)該把int length,int width寫在方法體外面,讓他成為類成員變量。建議好好看看有關(guān)java類的內(nèi)容。本人也是菜鳥,如有錯誤請見諒。