创建一个shape抽象类
时间: 2024-06-17 13:06:13 浏览: 11
创建一个Shape抽象类,你可以这样实现:
```
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数,表示该函数没有实现,子类必须实现
virtual double getPerimeter() = 0; // 纯虚函数,表示该函数没有实现,子类必须实现
};
```
通过定义一个抽象类 Shape,我们定义了一个接口,包括计算面积和周长的两个纯虚函数 getArea() 和 getPerimeter()。由于 Shape 是一个抽象类,不能直接实例化,我们需要通过派生子类来实现它。在子类中必须重写这两个纯虚函数,否则该子类也是抽象类。
相关问题
创建一个Shape抽象类,它带有一个area()方法,利用继承产生子类三角形类Trangle类,圆Circle类,矩形Rectangle类, 分别实现计算面积的方法。在测试类中创建圆Circle类对象c,矩形Rectangle类对象r,计算相应图形的面积。
下面是实现代码:
```python
# 创建抽象类 Shape
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
# 创建子类 Triangle
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
return 0.5 * self.base * self.height
# 创建子类 Circle
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
# 创建子类 Rectangle
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
# 测试类
if __name__ == '__main__':
c = Circle(3) # 创建圆对象
r = Rectangle(2, 4) # 创建矩形对象
# 输出各个图形的面积
print("圆的面积为:", c.area())
print("矩形的面积为:", r.area())
# 创建三角形对象
t = Triangle(3, 4)
print("三角形的面积为:", t.area())
```
输出结果:
```
圆的面积为: 28.26
矩形的面积为: 8
三角形的面积为: 6.0
```
建立一个抽象类Shape
建立一个抽象类Shape是为了定义一个通用的形状类,其中包含一个抽象方法draw()。通过建立这个抽象类,可以实现多态性,即不同的子类可以根据自己的实现方式来重写draw()方法。在代码中,J_Circle和J_Square分别继承Shape类,并实现了draw()方法。通过创建Shape类关于J_Circle的引用对象circle,并调用circle对象的draw()方法,可以观察到Shape类的多态性。
代码实现:
```java
package day02;
abstract class Shape{
abstract void draw();
}
class J_Circle extends Shape{
void draw() {
System.out.println("通过circle对象调用方法draw()");
}
}
class J_Square extends Shape{
void draw() {
System.out.println("调用J_Square中的draw方法");
}
}
public class Test_Shape {
public static void main(String[] args) {
Shape circle = new J_Circle();
circle.draw();
J_Square square = new J_Square();
square.draw();
}
}
```
实验总结:
1. 多态性是指具有不同功能的函数可以使用相同的函数名,通过不同的对象调用同一条消息,不同的对象在接收时会产生不同的行为。
2. 多态性的好处是增加了程序的灵活性和可扩展性。
3. Java的多态性包括方法的多态性和对象的多态性。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)