From b411ec0b910f51fe97f99bdaf522b4e1184e4142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=99=E6=9D=8E=E7=8E=9F=E2=80=98?= <2139119717@qq.com> Date: Thu, 11 May 2023 21:28:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=8E=E7=8E=9F=E7=9A=84=E5=A4=9A=E6=80=81?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...32\346\200\201\344\275\234\344\270\232.md" | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 "29 \346\235\216\347\216\237/0509 java \345\244\232\346\200\201\344\275\234\344\270\232.md" diff --git "a/29 \346\235\216\347\216\237/0509 java \345\244\232\346\200\201\344\275\234\344\270\232.md" "b/29 \346\235\216\347\216\237/0509 java \345\244\232\346\200\201\344\275\234\344\270\232.md" new file mode 100644 index 0000000..af8494d --- /dev/null +++ "b/29 \346\235\216\347\216\237/0509 java \345\244\232\346\200\201\344\275\234\344\270\232.md" @@ -0,0 +1,166 @@ +## 多态练习 + +### 1、图形 + +(1)父类Graphic图形 + +- public double area()方法:返回0.0 +- public double perimeter()方法:返回0.0 +- public String getInfo()方法,返回图形面积和图形周长 + +(2)子类Circle圆继承Graphic图形 + +- 包含属性:radius,属性私有化 +- 包含get/set方法 +- 重写area()求面积方法 +- 重写perimeter()求周长方法 +- 重写getInfo()方法,返回圆的半径,面积和周长 + +(3)子类矩形Rectangle继承Graphic图形 + +- 包含属性:length、width,属性私有化 +- 包含get/set方法 +- 重写area()求面积方法 +- 重写perimeter()求周长方法 +- 重写getInfo()方法,返回长和宽,面积、周长信息 + +(4)在测试类中,新建一个比较图形面积的方法,再建一个比较图形周长的方法,main方法中创建多个圆和矩形对象,再调用方法比较他们的周长或面积 + +```java +public class Graphic { + //- public double area()方法:返回0.0 + //- public double perimeter()方法:返回0.0 + //- public String getInfo()方法,返回图形面积和图形周长 + public double area(){ + return 0.0; + } + public double perimeter(){ + return 0.0; + } + public String getInfo(){ + return "面积"+area()+"周长"+perimeter(); + } +} +public class Circle extends Graphic{ + //(2)子类Circle圆继承Graphic图形 + //- 包含属性:radius,属性私有化 + //- 包含get/set方法 + //- 重写area()求面积方法 + //- 重写perimeter()求周长方法 + //- 重写getInfo()方法,返回圆的半径,面积和周长 + private double radius; + + public Circle(double radius) { + this.radius = radius; + } + + public Circle() { + } + + public double getRadius() { + return radius; + } + + public void setRadius(double radius) { + this.radius = radius; + } + + @Override + public double area() { + return Math.PI*radius*radius; + } + + @Override + public double perimeter() { + return 2*Math.PI*radius; + } + + @Override + public String getInfo() { + return "圆的半径"+getRadius()+"面积"+area()+"周长"+perimeter(); + } +} + +public class Rectangle extends Graphic{ + //)子类矩形Rectangle继承Graphic图形 + // + //- 包含属性:length、width,属性私有化 + //- 包含get/set方法 + //- 重写area()求面积方法 + //- 重写perimeter()求周长方法 + //- 重写getInfo()方法,返回长和宽,面积、周长信息 + private double length; + private double width; + + public Rectangle(double length, double width) { + this.length = length; + this.width = width; + } + public Rectangle() { + } + 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() { + //重写area()求面积方法 + return length*width; + } + @Override + public double perimeter() { + //- 重写perimeter()求周长方法 + return length*2+width*2; + } + @Override + public String getInfo() { + //- 重写getInfo()方法,返回长和宽,面积、周长信息 + return "矩形的长"+getLength()+"宽"+getWidth()+"面积"+area()+"周长"+perimeter(); + } +} + +public class Test { + public static void main(String[] args) { + //在测试类中,新建一个比较图形面积的方法,再建一个比较图形周长的方法,main方法中创建多个圆和矩形对象,再调用方法比较他们的周长或面积。 + //创建多个圆的对象 + Circle circle1 = new Circle(); + circle1.setRadius(1); + Circle circle2 = new Circle(); + circle2.setRadius(2); + yBig(circle1,circle2); + jBig(circle1,circle2); + //创建多个矩形对象 + Rectangle re= new Rectangle(); + re.setLength(2); + re.setWidth(2); + Rectangle re1 = new Rectangle(); + re1.setLength(1); + re1.setWidth(1); + yBig(re,re1); + jBig(re,re1); + } + public static void yBig(Graphic a,Graphic b){ + if (a.area()>b.area()){ + System.out.println("a>b"); + }else { + System.out.println("ad.perimeter()){ + System.out.println("c>d"); + }else { + System.out.println("c