标签:
/*
*建立的抽象类,把这个抽象类交给别人,别人的类需要继承该抽象类
*求得一个立体的底面积,但是我们可以不用管别人是怎么这个底面积的。
*/
package com.pan.e1;
/**
*
* 作者:属于雨灵的夜
*/
public abstract class Gemetry {
public abstract double getArea();
}
/*
*面向抽像类,设计主体功能
*Gemetry类和Volume类就是我们自己实现的,目的是为了计算体积。
*/
package com.pan.e1;
/**
*
* 作者:属于雨灵的夜
*/
public class Volume {
Gemetry botton;
double height;
public Volume(Gemetry botton , double height){
this.botton=botton;
this.height=height;
}
void changeBotton(Gemetry botton){
this.botton=botton;
}
public double getVolume(){
return botton.getArea()*height;
}
}
/*
* 乙为我们实现求三角形的面积,因为底面是个四边形,所以我们求得的是棱柱体的体积
*/
package com.pan.e1;
/**
*
* 作者:属于雨灵的夜
*/
public class Lader extends Gemetry {
double a,b,h;
public Lader(double a,double b,double h){
this.a=a;
this.b=b;
this.h=h;
}
public double getArea(){
return(0.5*(a+b)*h);
}
}
/*
*甲为我们实现求圆的面积,因为底面是个圆,所以求是求的圆柱体积
*/
package com.pan.e1;
/**
*
* 作者:属于雨灵的夜
*/
public class Circle extends Gemetry {
private double r;
public Circle(double r){
this.r=r;
}
public double getArea(){
return (3.14*r*r);
}
}
/*
*测试我们写的两个类:Gemetry和Volume
*现在如果别人帮我们实现圆柱体的底面积,我们就可以计算圆柱体的体积了。
*/
package com.pan.e1;
/**
*
* 作者;属于雨灵的夜
*/
public class Main {
public static void main(String[] args){
Volume v1;
Gemetry g;
g=new Lader(2,2,10);
System.out.println("梯形的面积"+g.getArea());
v1=new Volume(g,58);
System.out.println("梯形底的柱体的体积"+v1.getVolume());
g=new Circle(2.0);
System.out.println("圆的面积"+g.getArea());
v1=new Volume(g,4.0);
System.out.println("圆柱体的体积"+v1.getVolume());
}
}
通过编写不同的类继承Gemetry抽象类,我们就可以实现不通的形状的立体的体积,而我们之前的代码不需要任何的变动。
通过利用上转类型,我们可以面向抽象来编程,可以在前期专注于程序的逻辑设计,然后到后面再用子类继承抽象类或者接口来
实现具体的功能,或者子类的编写可以交给别人来写,达到并行开发软件的效果,从而提高软件的开发速度,也许这就是团队开发软件时采取的方法吧。
这就是面向对象编程!!!
标签:
原文地址:http://www.cnblogs.com/panshaobao/p/4426394.html