diff --git a/w4/.gitignore b/w4/.gitignore
new file mode 100644
index 0000000..13275f1
--- /dev/null
+++ b/w4/.gitignore
@@ -0,0 +1,30 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+.kotlin
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/w4/.idea/.gitignore b/w4/.idea/.gitignore
new file mode 100644
index 0000000..b6b1ecf
--- /dev/null
+++ b/w4/.idea/.gitignore
@@ -0,0 +1,10 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 已忽略包含查询文件的默认文件夹
+/queries/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
diff --git a/w4/.idea/misc.xml b/w4/.idea/misc.xml
new file mode 100644
index 0000000..6f29fee
--- /dev/null
+++ b/w4/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/w4/.idea/modules.xml b/w4/.idea/modules.xml
new file mode 100644
index 0000000..c4d4021
--- /dev/null
+++ b/w4/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/w4/.idea/vcs.xml b/w4/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/w4/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/w4/W4.iml b/w4/W4.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/w4/W4.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/w4/src/Circle.java b/w4/src/Circle.java
new file mode 100644
index 0000000..b3a64bc
--- /dev/null
+++ b/w4/src/Circle.java
@@ -0,0 +1,12 @@
+public class Circle extends Shape {
+ private double radius;
+
+ public Circle(double radius) {
+ this.radius = radius;
+ }
+
+ @Override
+ public double getArea() {
+ return Math.PI * radius * radius;
+ }
+}
diff --git a/w4/src/Main.java b/w4/src/Main.java
new file mode 100644
index 0000000..c24a6b9
--- /dev/null
+++ b/w4/src/Main.java
@@ -0,0 +1,11 @@
+public class Main {
+ public static void main(String[] args) {
+ Shape circle = new Circle(2);
+ Shape rectangle = new Rectangle(3, 4);
+ Shape triangle = new Triangle(3, 4);
+
+ ShapeUtil.printArea(circle);
+ ShapeUtil.printArea(rectangle);
+ ShapeUtil.printArea(triangle);
+ }
+}
\ No newline at end of file
diff --git a/w4/src/Rectangle.java b/w4/src/Rectangle.java
new file mode 100644
index 0000000..5674664
--- /dev/null
+++ b/w4/src/Rectangle.java
@@ -0,0 +1,14 @@
+public class Rectangle extends Shape {
+ private double width;
+ private double height;
+
+ public Rectangle(double width, double height) {
+ this.width = width;
+ this.height = height;
+ }
+
+ @Override
+ public double getArea() {
+ return width * height;
+ }
+}
diff --git a/w4/src/Shape.java b/w4/src/Shape.java
new file mode 100644
index 0000000..7ef588d
--- /dev/null
+++ b/w4/src/Shape.java
@@ -0,0 +1,3 @@
+public abstract class Shape {
+ public abstract double getArea();
+}
\ No newline at end of file
diff --git a/w4/src/ShapeUtil.java b/w4/src/ShapeUtil.java
new file mode 100644
index 0000000..9405e1b
--- /dev/null
+++ b/w4/src/ShapeUtil.java
@@ -0,0 +1,7 @@
+public class ShapeUtil {
+ public static void printArea(Shape shape) {
+ if (shape != null) {
+ System.out.println("面积:" + shape.getArea());
+ }
+ }
+}
\ No newline at end of file
diff --git a/w4/src/Triangle.java b/w4/src/Triangle.java
new file mode 100644
index 0000000..d81b1c5
--- /dev/null
+++ b/w4/src/Triangle.java
@@ -0,0 +1,14 @@
+public class Triangle extends Shape {
+ private double base;
+ private double height;
+
+ public Triangle(double base, double height) {
+ this.base = base;
+ this.height = height;
+ }
+
+ @Override
+ public double getArea() {
+ return 0.5 * base * height;
+ }
+}
diff --git a/w4/反思.doc b/w4/反思.doc
new file mode 100644
index 0000000..ddbff12
Binary files /dev/null and b/w4/反思.doc differ
diff --git a/w4/实验报告.docx b/w4/实验报告.docx
new file mode 100644
index 0000000..b92e63d
Binary files /dev/null and b/w4/实验报告.docx differ
diff --git a/w4/实验结果.png b/w4/实验结果.png
new file mode 100644
index 0000000..66958dd
Binary files /dev/null and b/w4/实验结果.png differ
diff --git a/w4/类图.png b/w4/类图.png
new file mode 100644
index 0000000..d8e2e89
Binary files /dev/null and b/w4/类图.png differ