|
(1) 抽象类Area类只包含一个抽象方法 double area()。
(2) 子类RectArea类通过覆盖父类中的抽象方法area()来求圆的面积,另外一个子类RectArea类通过覆盖父类中的抽象方法area()来求长方形的面积。
(3) 圆的半径和长方形的边分别定义为子类RectArea类和RoundArea类的属性,为double类型。
|
(1) 抽象类Area类只包含一个抽象方法 double area()。
(2) 子类RectArea类通过覆盖父类中的抽象方法area()来求圆的面积,另外一个子类RectArea类通过覆盖父类中的抽象方法area()来求长方形的面积。
(3) 圆的半径和长方形的边分别定义为子类RectArea类和RoundArea类的属性,为double类型。
首先来写那个抽象类
(1) 抽象类Area类只包含一个抽象方法 double area()。
public abstract class Area {
public abstract double area(); //抽像方法area的定义
}
很简单 就定一个方法 具体怎么做 看继承的子类来实现
然后我们在来看看园的子类是怎么来现实的
public class RoundAreaextends Area{
private Double r;
private final double T = 3.14;
public RoundArea(double r)//构造函数
{
this.r=r;
}
public double area() {//从写父类的方法
return this.T*this.r*this.r;
}
}
这个是继承类抽象类的园
接下来写RectArea 长方形
public class RectArea extends Area{
private double w;
private double h;
public RectArea(double w,double h)//构造函数
{
this.h=h;
this.w=w;
}
public double area() {
return this.w*this.h;
}
}
接下来看看测试类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ceshi {
public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Area st;
try {
System.out.println("请输入圆半径");
double r = Float.parseFloat(in.readLine());
st = new RoundArea(r);
System.out.println("半径是"+r+"的园的面积是:"+st.area());
System.out.println("请输入长方形的长");
double w = Float.parseFloat(in.readLine());
System.out.println("请输入长方形的高");
double h = Float.parseFloat(in.readLine());
st = new RectArea(w,h);
System.out.println("长是"+w+"高是"+h+"的长方形面积是:"+st.area());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
看看测试结果
abstract class Area{ double a; double b; Area(double a,double b){ this.a = a; this.b = b; } abstract double area(); } class RectArea extends Area{ RectArea(double a,double b){ super(a,b); } double area(){ return a*b/2; } } class RoundArea extends RectArea{ RoundArea(double a,double b){ super(a,b); } double area(){ return a*b; } } public class Test3{ public static void main(String[] args){ RectArea Rect = new RectArea(10,10); Area aa; aa = Rect; System.out.println("三角形面积:"+aa.area()); RoundArea round = new RoundArea(10,10); aa = round; System.out.println("四边形面积:"+aa.area()); } }
简介 明了
程序代码:
abstract class Area { abstract double Area(); } class RectArea extends Area { private double length; private double width; public RectArea(double l,double w) { length = l; width = w; } public double Area() { return length*width; } } class RoundArea extends Area { private double r;
public RoundArea(double r) { this.r=r; } public double Area() { return Math.PI*r*r; } }
public class Test { public static void main(String args[]) { RectArea rect = new RectArea(4,6); System.out.println("长方形面积:"+rect.Area()); RoundArea round = new RoundArea(5); System.out.println("圆面积:"+round.Area()); } }
程序运行结果: