package com.xbmd.abstractmode;
public abstract class Graphics
{
//面积
abstract double area();
//周长
abstract double perimeter();
//模版,不准别人更改
public final void print()
{
System.out.println("面积:"+area());
System.out.println("周长:"+perimeter());
}
}
package com.xbmd.abstractmode;
//¾²Ì¬µ¼ÈëMathÀàÖеľ²Ì¬×Ö¶ÎPI
import static java.lang.Math.PI;
public class Circle extends Graphics {
//Ô²°ë¾¶
private double r;
public Circle(double r)
{
this.r=r;
}
double area() {
return PI*r*r;
}
double perimeter() {
return 2*PI*r;
}
}
package com.xbmd.abstractmode;
public class Rectangle extends Graphics {
private double a;
private double b;
public Rectangle(double a,double b)
{
this.a=a;
this.b=b;
}
double area() {
return a*b;
}
double perimeter() {
return 2*(a+b);
}
}
package com.xbmd.abstractmode;
public class Triangle extends Graphics {
//Èý±ßÖ®³¤
private double a;
private double b;
private double c;
public Triangle(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
}
double area() {
double p = (a+b+c)/2;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
double perimeter() {
return a+b+c;
}
}
package com.xbmd.abstractmode;
/**
* 抽象方法的体现:模版模式
* 需求:
* 1.求不同图形(三角形,矩形,圆)的面积,周长。
* 2.写一个打印方法,将其面积和周长打印出来
*/
public class AbstractModeDemo{
public static void main(String[] args) {
System.out.println("圆--->");
Circle c = new Circle(5);
c.print();
System.out.println("三角形--->");
Triangle t = new Triangle(3,4,5);
t.print();
System.out.println("矩形--->");
Rectangle r = new Rectangle(4, 5);
r.print();
}
}