一个抽象类的经典案例
2017-02-07 11:16
260 查看
1.根据周长计算不同形状图形的面积
以正方形和圆形为例
(1)分别定义Square类和Circle类,并且定义Square类和Circle类中的c属性和area方法。
public class Circle Shape{
private double c;
public Circle(double c){
this.c=c;
}
/**
* 计算圆形的面积
*/
public double area(){
return 0.0796*c*c;
}
}
public class Square Shape{
private double c;
public Square(double c){
this.c=c;
}
/**
* 计算正方形的面积
* @param c
*/
public double area(){
return 0.0625*c*c;
}
}
(2)定义父类Shape并抽取子类Square和Circle中共有属性c和方法area抽取到父类Shape中,并重构Square类和Circle类
public abstract class Shape {
protected double c;
public abstract double area();
}
(3)修改Square类和Circle类。
public class Circle extends Shape{
private double c;
public Circle(double c){
this.c=c;
}
/**
* 计算圆形的面积
*/
public double area(){
return 0.0796*c*c;
}
}
public class Square extends Shape{
private double c;
public Square(double c){
this.c=c;
}
/**
* 计算正方形的面积
* @param c
*/
public double area(){
return 0.0625*c*c;
}
}
(4)定义计算最大面积的方法
public static void maxArea(Shape[] shapes){
double max=shapes[0].area();
int maxIndex=0;
for(int i=1;i<shapes.length;i++){
double area=shapes[i].area();
if(area>max){
max=area;
maxIndex=i;
}
}
System.out.println("数组中索引为"+maxIndex+"的图形的面积最大,面积为:"+max);
}
(5)测试
public static void main(String[] args){
Shape[] shapes=new Shape[2];
shapes[0]=new Circle(4);
shapes[1]=new Square(4);
maxArea(shapes);
}
以正方形和圆形为例
(1)分别定义Square类和Circle类,并且定义Square类和Circle类中的c属性和area方法。
public class Circle Shape{
private double c;
public Circle(double c){
this.c=c;
}
/**
* 计算圆形的面积
*/
public double area(){
return 0.0796*c*c;
}
}
public class Square Shape{
private double c;
public Square(double c){
this.c=c;
}
/**
* 计算正方形的面积
* @param c
*/
public double area(){
return 0.0625*c*c;
}
}
(2)定义父类Shape并抽取子类Square和Circle中共有属性c和方法area抽取到父类Shape中,并重构Square类和Circle类
public abstract class Shape {
protected double c;
public abstract double area();
}
(3)修改Square类和Circle类。
public class Circle extends Shape{
private double c;
public Circle(double c){
this.c=c;
}
/**
* 计算圆形的面积
*/
public double area(){
return 0.0796*c*c;
}
}
public class Square extends Shape{
private double c;
public Square(double c){
this.c=c;
}
/**
* 计算正方形的面积
* @param c
*/
public double area(){
return 0.0625*c*c;
}
}
(4)定义计算最大面积的方法
public static void maxArea(Shape[] shapes){
double max=shapes[0].area();
int maxIndex=0;
for(int i=1;i<shapes.length;i++){
double area=shapes[i].area();
if(area>max){
max=area;
maxIndex=i;
}
}
System.out.println("数组中索引为"+maxIndex+"的图形的面积最大,面积为:"+max);
}
(5)测试
public static void main(String[] args){
Shape[] shapes=new Shape[2];
shapes[0]=new Circle(4);
shapes[1]=new Square(4);
maxArea(shapes);
}
相关文章推荐
- 一个经典设计案例分析
- Oracle select max(id),min(id)一个经典优化案例
- 姜文把主演当导演《陈赓大将》三易导演:一个经典的项目干系人管理案例
- 一个经典的问题(构造函数调用+抽象类+间接继承抽象类)
- 一个经典的函数模块化设计案例及源码[哥德巴赫猜想]
- 一个经典案例讲到极致
- 80后少帅败光山西最大民企,一个经典的接班失败案例
- struts2入门-第一个例子==》第一个struts2实例——HelloWorld==》Struts2.0搭建和简单实例==>写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子
- 知识众筹第9期 一个经典案例学会数据分析 | 开始分红报名
- 一个多态经典案例
- 一个非常经典的案例!---多看看对你有好处!
- 一个经典的问题(构造函数调用+抽象类+间接继承抽象类)
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
- SQL Server 中 自定义函数 和 游标 应用的经典案例
- 一个经典的JAVA APPLET程序(二)
- 博弈论的经典案例:囚徒困境
- 一个男女孩写的经典程序
- 面试时,回答薪酬的几种经典案例
- CSDN上的一个帖子,“李维的经典话语”。