diff --git "a/33 \346\235\216\345\245\211\345\275\254/20230509 \345\244\232\346\200\201\344\275\234\344\270\232\343\200\201.txt" "b/33 \346\235\216\345\245\211\345\275\254/20230509 \345\244\232\346\200\201\344\275\234\344\270\232\343\200\201.txt" new file mode 100644 index 0000000000000000000000000000000000000000..c3c41918416d8e511e4753b0be78df786ffc386a --- /dev/null +++ "b/33 \346\235\216\345\245\211\345\275\254/20230509 \345\244\232\346\200\201\344\275\234\344\270\232\343\200\201.txt" @@ -0,0 +1,144 @@ +## 多态练习 + +### 1、图形 + +(1)父类Graphic图形 + +- public double area()方法:返回0.0 +- public double perimeter()方法:返回0.0 +- public String getInfo()方法,返回图形面积和图形周长 + +public class Graphic { + public double area(){ + return 0.0; + } + public double perimeter(){ + return 0.0; + } + public String getInfo(){ + return "面积:"+area()+"周长:"+perimeter(); + } + +} + +(2)子类Circle圆继承Graphic图形 + +- 包含属性:radius,属性私有化 +- 包含get/set方法 +- 重写area()求面积方法 +- 重写perimeter()求周长方法 +- 重写getInfo()方法,返回圆的半径,面积和周长 + +public class Circle extends Graphic{ + public double getRadius() { + return radius; + } + + public void setRadius(double radius) { + this.radius = radius; + } + + private double radius; + + @Override + public double area() { + return Math.PI*radius*radius; + } + + @Override + public double perimeter() { + return Math.PI*radius*2; + } + + @Override + public String getInfo() { + return "半径为"+radius+super.getInfo(); + } +} + +(3)子类矩形Rectangle继承Graphic图形 + +- 包含属性:length、width,属性私有化 +- 包含get/set方法 +- 重写area()求面积方法 +- 重写perimeter()求周长方法 +- 重写getInfo()方法,返回长和宽,面积、周长信息 + +ublic class Rectangle extends Graphic{ + private double length; + private double width; + + public double getLength() { + return length; + } + + public void setLength(double length) { + this.length = length; + } + + public double getWidth() { + return width; + } + + public void setWidth(double width) { + this.width = width; + } + + @Override + public double area() { + return length*width; + } + + @Override + public double perimeter() { + return (length+width)*2; + } + + @Override + public String getInfo() { + return "长"+length+"宽"+width+super.getInfo(); + } +} + +(4)在测试类中,新建一个比较图形面积的方法,再建一个比较图形周长的方法,main方法中创建多个圆和矩形对象,再调用方法比较他们的周长或面积。 +public class Text { + public static void main(String[] args) { + Graphic[] gr = new Graphic[4]; + + Rectangle r1 = new Rectangle(); + r1.setLength(5); + r1.setWidth(2); + gr[0]=r1; + + Rectangle r2 = new Rectangle(); + r2.setLength(5); + r2.setWidth(2); + gr[1]=r2; + + Circle c1 = new Circle(); + c1.setRadius(2); + gr[2]=c1; + + Circle c2 = new Circle(); + c2.setRadius(1); + gr[3]=c2; + + for (int i = 0; i < gr.length; i++) { + System.out.println(gr[i].getInfo()); + } + + for (int i = 1; i < gr.length; i++) { + for (int j = 0; j < gr.length-i; j++) { + if (gr[j].area()>gr[j+1].area()) { + Graphic tmp = gr[j]; + gr[j] = gr[j+1]; + gr[j+1]=tmp; + } + } + } + for (int i = 0; i < gr.length; i++) { + System.out.println(gr[i].getInfo()); + } + } + +} \ No newline at end of file