抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类中定义抽象方法的目的是实现一个接口多种方法的原理,即所有的子类对外都呈现一个相同名字的方法。
使用抽象类的一大优点就是可以充分利用这些公共属性来提高开发和维护程序的效率。举例如下:
Abstractshape.java
package aaa;
abstract class Shape{
public int x,y;
public int width,height;
public Shape(int x,int y,int width,int height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
}
abstract double area();
abstract double perimeter();
}
class Rect extends Shape{
public double area() {return (width*height);}
public double perimeter() {return(2*width+2*height);}
public Rect(int x,int y,int width,int height){
super(x,y,width,height);
}
}
class Triangle extends Shape{
public double c;
public double area() {return (0.5*width*height);}
public double perimeter() {return (width+height+c);}
public Triangle(int x,int y,int width ,int height){
super(x,y,width,height);
c=Math.sqrt(width*width+height*height);
}
}
class Circle extends Shape{
double r;
double area() {return (r*r*Math.PI);}
public double perimeter() {return(2*Math.PI*r);}
public Circle (int x,int y,int width,int height){
super(x,y,width,height);
r=(double)width/2.0;
}
}
public class Abstractshape {
public static void main(String[] args){
Rect rect=new Rect(50,150,250,250);
Triangle tri=new Triangle(50,500,80,40);
Circle cir=new Circle(50,900,250,250);
System.out.println("rectangle position's coordinate is:("+rect.x+","+rect.y+")");
System.out.println("area of triangle is:"+tri.area());
System.out.println("perimeter of circle is:"+cir.perimeter());
}
}
编译运行后的结果如下:
rectangle position's coordinate is:(50,150)
area of triangle is:1600.0
perimeter of circle is:785.3981633974482