黑马程序员_多态性编写代码可以提高拓展性
来源:互联网 发布:淘宝卖家都用什么软件 编辑:程序博客网 时间:2024/05/22 09:40
用图形类作抽象类,在抽象类中定义了面积的抽象方法,另定义三角形类、梯形类和圆类继承图形类,在各自的类中定义了相关类的属性和方法,重写面积方法。最后定义主类,在主类中定义一个以抽象类为参数的方法,利用多态性原则,调用面积方法,提高了代码的拓展性!实现代码如下:
import java.lang.Math; //因为要运用到数学公式开方,所以要先导入包Java.lang.Math
abstract class Grap //图形抽象类
{
//在抽象类中定义面积方法体
public abstract double getArea();
}
class Trangle extends Grap //三角形
{
//三边边长为a,b,c
private double a;
private double b;
private double c;
//周长per和面积area
private double per;
private double area;
public Trangle(double a,double b,double c){ //设置三角形三边的长
if((a+b)>c&&(b+c)>a&&(a+c)>b){
this.a=a;
this.b=b;
this.c=c;
}else{
System.out.println("三角形三边的设置有误,不能构成三角形,请重新设置");
}
}
public double getPerimeter(){ //返回周长
per=a+b+c;
return per;
}
public double getArea(){ //返回三角形的面积
double q=(a+b+c)/2;
area=Math.sqrt(q*(q-a)*(q-b)*(q-c));
return area;
}
}
/*
定义梯形类,该类继承图形类,在类中的构造器中初始化了梯形的边长和覆盖了图形类中的抽象方法
*/
class Lader extends Grap {
private double a;
private double b;
private double h;
private double area;
public Lader(double a,double b,double h){ //设置梯形的上底下底和高
this.a=a;
this.b=b;
this.h=h;
}
public double getArea(){ //返回梯形面积
area=(a+b)*h/2;
return area;
}
}
/*
定义圆形类,该类继承图形类
*/
class Circle extends Grap {
private double r;
private double per;
private double area;
static final double PI=3.14;
public void Circle(double r){ //设置半径
if(r>0){
this.r=r;}
else{
System.out.println("半径不能为负");
}
}
public double getPerimeter(){ //计算周长
per=2*PI*r;
return per;
}
public double getArea(){ //计算圆面积
area=PI*r*r;
return area;
}
}
/*
定义主类
*/
public class GraphicsA
{
public static void main(String args[]){
function(new Trangle(3,4,5)); //调用function()方法
function(new Lader(3,5,5));
}
//以Grap为参数,目的就是利用向上转型调用子类中的覆盖方法,即实现多态性
public static void function(Grap g){
System.out.println(g.getClass().getName()+"面积为:"+g.getArea());
if(g instanceof Trangle){
Trangle t=(Trangle)g;
System.out.println("周长为:"+t.getPerimeter());
}else if(g instanceof Circle){
Circle c=(Circle)g;
System.out.println("周长为:"+c.getPerimeter());
}
}
}
运行效果如图:
------- android培训、java培训、期待与您交流! ----------
详情请查看:
- 黑马程序员_多态性编写代码可以提高拓展性
- 黑马程序员_多态性
- 黑马程序员_多态性
- 黑马程序员_多态性和关键字instanceof
- 黑马程序员_集合学习以及拓展
- 黑马程序员-继承性、多态性
- 黑马程序员_代码块
- 黑马程序员_代码块
- 黑马程序员_学习笔记17_Http协议拓展
- 黑马程序员_Java多态性
- 程序员怎么才能提高代码编写速度?
- 程序员怎么才能提高代码编写速度?
- 程序员怎么才能提高代码编写速度?
- 黑马程序员-JAVA的多态性
- 黑马程序员------Java的多态性
- 黑马程序员_静态代码块
- 黑马程序员_静态代码块
- 黑马程序员_拷贝文件夹的代码
- dedeCMS 注册失败,请检查资料是否有误或与管理员联系-解决方法
- OpenCV学习之四: 矩阵的掩码操作
- Android Paint和Color类
- 动态规划 - 之 - 矩阵链式乘法数
- 不知道的知识四——指针数组的删除
- 黑马程序员_多态性编写代码可以提高拓展性
- 高并发系统设计
- arduino与processing串口通信问题
- Linux Epoll介绍和程序实例
- 打开itools如果提示:订阅设备设备失败
- The Curse of Dimensionality in classification
- 公安部教官团赴疆培训用枪 强化应对冷兵器能力
- 公安部教官团赴疆培训用枪 强化应对冷兵器能力
- 关于科研的建议