java 接口实现多态
2024-09-29 01:53:58
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>
理论上,配置成功可以在网页上启动小程序的。
最新文章
- mysql SQL优化之嵌套查询-遁地龙卷风
- Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数
- ajax之jsonp跨域请求
- 如何让oracle的select强制走索引
- ios 中清除webView的缓存
- Linux 制作ftp远程yum仓库
- 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
- Java设计模式系列之中介者模式
- innobackupex自动备份脚本(增量备份,自动压缩)
- [转载]IOS项目打包除去NSLog和NSAssert处理之阿堂教程
- MongoDB基础之七 用户管理
- 【Tesseract】Tesseract API在VS 2013中的配置以及调用
- Vmware虚拟机中CentOS7与Docker安装图文教程
- 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决
- Django后台邮箱配置
- jmeter简单压测设置
- 页面练习my blog day51
- wepy - 小程序开发框架
- Codeforces Round #265 (Div. 2) E. Substitutes in Number
- RBAC相关的配置
热门文章
- 51nod 1086 背包问题 V2 【二进制/多重背包】
- Manacher【p1659】 [国家集训队]拉拉队排练
- codevs——1553 互斥的数
- postgres表空间、模式、表和用户/角色之间的关系
- Ubuntu下触控板手势调节软件xSwipe
- 加强版dd工具dc3dd
- iframe和response.sendRedirect()跳转到父页面的问题
- 玩转Nuget服务器搭建(二)
- Ubuntu 16.04网络管理工具NetworkManager无法使用nm-tool的问题
- xcode 6 exporting ipa 提示 Your account already has a valid iOS distribution certificate 的另一种解决方法