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+"平方厘米"); } }