用java实现以下功能1,定义父类class Shape{ String name; public void showName(){...........} } 2. 定义子类:圆形,三角形,矩形,包含求周长,求面积等公式; 3. 定义一个Main类,在其main函数中,用这三个子类创建对象,求其面积,周长等; 4. 请在Main类中定义参数为Shape类型的函数: static void showArea(Shape shape) {.............} static void showPerimeter(Shape shape){..............} 将三角形,圆形,矩形的对象传入,理解面向对象的深刻含义
时间: 2023-06-10 22:08:07 浏览: 198
好的,以下是用Java实现以上功能的代码:
1. 定义父类 Shape:
```
class Shape{
String name;
public void showName(){
System.out.println("这是一个" + name);
}
public double getArea(){
return 0;
}
public double getPerimeter(){
return 0;
}
}
```
2. 定义子类:Circle(圆形),Triangle(三角形),Rectangle(矩形):
```
class Circle extends Shape{
double radius;
public Circle(double r){
name = "圆形";
radius = r;
}
public double getArea(){
return Math.PI * radius * radius;
}
public double getPerimeter(){
return 2 * Math.PI * radius;
}
}
class Triangle extends Shape{
double a, b, c;
public Triangle(double x, double y, double z){
name = "三角形";
a = x;
b = y;
c = z;
}
public double getArea(){
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
public double getPerimeter(){
return a + b + c;
}
}
class Rectangle extends Shape{
double length, width;
public Rectangle(double l, double w){
name = "矩形";
length = l;
width = w;
}
public double getArea(){
return length * width;
}
public double getPerimeter(){
return 2 * (length + width);
}
}
```
3. 在Main类中创建对象,求其面积,周长等:
```
public class Main{
public static void main(String[] args){
Circle c = new Circle(5);
System.out.println("圆的面积为:" + c.getArea());
System.out.println("圆的周长为:" + c.getPerimeter());
Triangle t = new Triangle(3, 4, 5);
System.out.println("三角形的面积为:" + t.getArea());
System.out.println("三角形的周长为:" + t.getPerimeter());
Rectangle r = new Rectangle(4, 6);
System.out.println("矩形的面积为:" + r.getArea());
System.out.println("矩形的周长为:" + r.getPerimeter());
}
}
```
输出结果:
```
圆的面积为:78.53981633974483
圆的周长为:31.41592653589793
三角形的面积为:6.0
三角形的周长为:12.0
矩形的面积为:24.0
矩形的周长为:20.0
```
4. Main类中定义参数为Shape类型的函数:
```
public class Main{
public static void main(String[] args){
Circle c = new Circle(5);
Triangle t = new Triangle(3, 4, 5);
Rectangle r = new Rectangle(4, 6);
showArea(c);
showArea(t);
showArea(r);
showPerimeter(c);
showPerimeter(t);
showPerimeter(r);
}
static void showArea(Shape shape){
System.out.println(shape.name + "的面积为:" + shape.getArea());
}
static void showPerimeter(Shape shape){
System.out.println(shape.name + "的周长为:" + shape.getPerimeter());
}
}
```
输出结果:
```
圆形的面积为:78.53981633974483
三角形的面积为:6.0
矩形的面积为:24.0
圆形的周长为:31.41592653589793
三角形的周长为:12.0
矩形的周长为:20.0
```
理解面向对象的深刻含义在于,将不同的类抽象出来,将它们的共同点归纳到一个父类中,并在子类中实现各自的特殊功能。在调用函数时,只需要传入父类类型的参数,就可以调用对应子类的方法,而不需要为每个子类单独编写方法。这样可以大大减少代码的重复性和冗余性,提高了程序的可扩展性和可维护性。
阅读全文