java 抽象方法

int 是基本数据类型
Integer是其包装类,注意是一个类。
为什么要提供包装类呢???
一是为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化。
比如,现在int要转为String
int a=0;
String result=Integer.toString(a);
在java中包装类,比较多的用途是用在于各种数据类型的转化中。
我写几个demo

//通过包装类来实现转化的
int num=Integer.valueOf("12");
int num2=Integer.parseInt("12");

double num3=Double.valueOf("12.2");
double num4=Double.parseDouble("12.2");
//其他的类似。通过基本数据类型的包装来的valueOf和parseXX来实现String转为XX

String a=String.valueOf("1234");//这里括号中几乎可以是任何类型
String b=String.valueOf(true);
String c=new Integer(12).toString();//通过包装类的toString()也可以
String d=new Double(2.3).toString();

 

package integer;
abstract class Area{//抽象方法
 abstract public Double getArea();
}

class Circle  extends Area{// 求圆面积
	private Integer r;
	private Double num = 3.14;

	public Circle(Integer r) {// 创建构造器
		super();
		this.r = r;
	}

	public Double getArea() {
		return r * r * 3.14;
	}
}

class Rectangle extends Area{//求矩形面积
	private Integer height;
	private Integer width;
	public Rectangle(Integer height,Integer width) {
		// TODO 自动生成的构造函数存根
		this.height=height;
		this.width=width;
	}
	@Override
	public Double getArea() {
		// TODO 自动生成的方法存根
		return height.doubleValue()*width.doubleValue();
	}
}

class Triangle extends Area{//求三角形面积
	private Integer a;
	private Integer b;
	private Integer c;
	Triangle(Integer a,Integer b,Integer c){
		this.a=a;
		this.b=b;
		this.c=c;
	}
	
	@Override
	public Double getArea() { 
		// TODO 自动生成的方法存根
		Double p=(a+b+this.getC())/2.0;
		return Math.sqrt( p*(p-a)*(p-b)*(p-this.getC()));//使用海伦公式:S= 根号下p(p-a)(p-b)(p-c) 
	}

	public Integer getC() {
		if(a+b<c || a+c<b || b+c<a){
			System.out.println("三角形的第三边大于两边之和,不能计算面积!");
		}
		return c;
	}

}

//测试类
public class GrapDemo {
	public static void main(String[] args) {
		Double area=new Circle(2).getArea();//两行代码转成一行代码,同等:circle n=new circle();n.getArea();
		System.out.println("圆的面积为:"+area+"平方厘米");
		
		Double rectangle=new Rectangle(10,20).getArea();
		System.out.println("矩形的面积为:"+rectangle+"平方厘米");
		
		Double rriangle=new Triangle(23,12,23).getArea();
		System.out.println("三角形的面积为:"+rriangle+"平方厘米");
	}
}

 


posted @ 2017-03-28 11:25  *小嘻嘻*  阅读(266)  评论(0编辑  收藏  举报