java 接口实现多态
package unit4; import java.awt.Graphics; public interface Shape { void drowme(Graphics g); double area(); double length(); String getName(); }
package unit4; import java.awt.Graphics; public class Point implements Shape{ int x,y; Point (int x,int y){this.x=x;this.y=y;} public double area() { // TODO Auto-generated method stub return 0; } public void drowme(Graphics g) { g.fillOval(x,y,5,5); } public String getName() { // TODO Auto-generated method stub return "Point"; } public double length() { // TODO Auto-generated method stub return 0; } }
package unit4; import java.awt.Graphics; public class Triangle implements Shape { Point a,b,c; public Triangle(Point aa,Point bb,Point cc) { // TODO Auto-generated constructor stub a=aa; b=bb; c=cc; } public double area() { double a_b=Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); double a_c=Math.sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)); double b_c=Math.sqrt((b.x-c.x)*(b.x-c.x)+(b.y-c.y)*(b.y-c.y)); double l=(a_b+a_c+b_c)/2; double s=Math.sqrt((l-a_b)*(l-b_c)*(l-a_c)*l); return s; } public void drowme(Graphics g) { g.drawLine(a.x,a.y,b.x,b.y); g.drawLine(a.x,a.y,c.x,c.y); g.drawLine(b.x,b.y,c.x,c.y); } public String getName() { return "triangle"; } public double length() { double a_b=Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); double a_c=Math.sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)); double b_c=Math.sqrt((b.x-c.x)*(b.x-c.x)+(b.y-c.y)*(b.y-c.y)); double l=(a_b+a_c+b_c); return l; } }
package unit4; import java.awt.Graphics; public class Circl implements Shape { Point c; int r; public Circl(Point cc,int rr) { c=cc; r=rr; } public double area() { return 3.14159*r*r; } public void drowme(Graphics g) { g.drawOval(c.x-r,c.y-r,2*r,2*r); } public String getName() { return "circle"; } public double length() { return 2*3.14159*r; } }
package unit4; import java.awt.Graphics; public class Rect implements Shape{ Point a,b; Rect(Point aa,Point bb){a=aa;b=bb;} public double area() { return (a.x-b.x)*(a.y-b.y); } public void drowme(Graphics g) { g.drawRect(a.x,a.y,b.x-a.x,b.y-a.y); } public String getName() { return "rectangle"; } public double length() { return (b.x-a.x)*2+(b.y-a.y)*2; } }
package unit4; import java.applet.Applet; import java.awt.Graphics; public class Shapetest extends Applet{ Shape[]myshapes=new Shape[5]; public void init() { Point a0=new Point(50,50); Point a1 = new Point(24,24); Point a2=new Point(100,200); Point a3 = new Point(200,120); myshapes[0]=a0; myshapes[1]=new Triangle(a1,a2,a3); myshapes[2]=new Circl(a2,50); myshapes[3]=new Circl(a3,100); myshapes[4]=new Rect(new Point(100,100),new Point(200,200)); } public void paint(Graphics g){ for(int i=0;i<myshapes.length;i++){ myshapes[i].drowme(g); System.out.println(myshapes[i].getName()+": area: "+myshapes[i].area()+", length: "+myshapes[i].length()); } } }
这里可以直接在eclipse上运行位applet,但是,我发现一个严重的问题,我没法部署网站,哎,先不管了,以后用到了在慢慢调吧。
每次都要费老大劲配置。我日。。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <applet code="shapetest.class" width=400 height=400> </applet> </body> </html>
理论上,配置成功可以在网页上启动小程序的。