本文通过Python带大家理解何为面向对象程序设计. 要理解面向对象程序设计的概念, 要从理解对象, 类和方法说起.
有了基础之后了解面向对象编程的主要概念: 封装, 多态, 继承, 抽象, 组合.
01 对象
何为对象:
1、表示所开发的应用程序内的实体.
2、实体之间可以交互来解决现实世界的问题.
3、如, Person是实体, Car也是实体. Person开着Car到另一地方.
02 类
何为类:
1、可以定义对象的属性和行为. 属性是数据成员, 行为由成员函数表示.
2、类里面包含了构造函数, 构造函数的作用是初始化状态对象.
3、类易于重复使用.
03 方法
何为方法:
1、表示对象的行为.
2、可以对属性处理, 实现所需功能.
看代码:
class Person():
def __init__(self, name, age):
self.name = name
self.age = age
def get_preson(self):
return "<Person ({0}, {1})>".format(self.name, self.age)
if __name__ == "__main__":
p = Person("A", 18)
print("对象类型为: ", type(p), "内存地址为: ", id(p))
04 封装
封装有几个特点为:
1、对象的行为对于外部世界是不可见的, 或者说对象的状态信息是私密的.
2、不能直接操作去改变对象的内部状态. 需要通过发送消息去请求对象来改变内部状态.
3、Python中的封装不是隐式的, 了解C++基础知道在C++中有关键字public, private, protected等关键字用于封装.
05 多态
多态的类型:
1、对象根据输入参数来提供方法的不同实现.
2、不同类型的对象可以使用相同的接口.
比如通过索引可以访问字符串, 元组, 列表如:
a = "John"
b = (1, 2, 3)
c = [3, 4, 5, 6]
print(a[1], b[0], c[2])
06 继承
何为继承:
1、表示一个类可以继承父类的大部分功能.
2、可以被描述为一个重用基类中定义的功能,并且可以独立扩展.
3、继承可以根据不同类的对象之间的关系建立层次结构. Python支持多重继承. 看代码:
class A:
def a(self):
print("a")
class B(A):
def b(self):
print("b")
if __name__ == "__main__":
b = B()
b.a()
07 抽象
何为抽象:
1、提供了简单的接口, 通过该接口与类的对象进行交互, 并可以调用接口中定义的各个方法.
2、将内部类的复杂性抽象为一个接口, 用户使用的时候就不需要知道内部如何实现的了. 看例子:
class Adder:
def __init__(self):
self.sum = 0
def add(self, value):
self.sum += value
if __name__ == "__main__":
acc = Adder()
# 计算 1到99的和
for i in range(1, 100):
acc.add(i)
print(acc.sum)
08 组合
何为组合:
1、是一种将对象或类组合成更复杂的数据结构或软件实现的方法.
2、无需继承就可以调用其他模块中的成员函数,实现了基本功能的跨模块使用. 看代码:
class A():
def a(self):
print("a")
class B():
def b(self):
print("b")
A().a()
if __name__ == "__main__":
b = B()
b.b() #这里也调用了A类中的a()方法, 不用继承的方式.
了解上面的内容, 我想大家对"面向对象"会有更好的理解.
如果喜欢本文请关注公众号: