为什么封装相比于不封装可以提高代码复用,请举个例子
时间: 2024-01-15 17:04:54 浏览: 30
假设我们有一个类`Person`,它有两个属性`name`和`age`,以及一个方法`printInfo()`,用于打印出该人的姓名和年龄:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def printInfo(self):
print("Name: %s, Age: %d" % (self.name, self.age))
```
如果我们不封装这个类,那么我们在其他地方需要使用这个类时,需要直接访问类的属性`name`和`age`,这会暴露出类的实现细节,增加了耦合度。而如果我们封装这个类,将`name`和`age`属性设为私有属性,只提供`getName()`和`getAge()`方法供外部调用,则外部调用者只需要知道如何使用这些接口,而不需要关心内部的具体实现细节。这样,即使内部实现发生了变化,我们只需要修改`getName()`和`getAge()`方法,而不会影响到外部调用者。
```python
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def getName(self):
return self.__name
def getAge(self):
return self.__age
def printInfo(self):
print("Name: %s, Age: %d" % (self.__name, self.__age))
```
这样,外部调用者只需要使用`getName()`和`getAge()`方法来获取`Person`对象的姓名和年龄,这样可以提高代码复用率,同时保证了代码的可维护性和可读性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)