面向对象的思想是高级语言中最好的特性,使程序的开发更加优美,维护起来更加简洁。
Python中面向对象与Java中的面向对象在特性和功能方面几乎没有区别。
面向对象的特征:
- 封装性:可以将多个属性和方法(功能)封装,有利于统一维护
- 继承性:在继承父类之后将拥有父类的属性和方法,简化程序的开发,维护
- 多态性:相同函数由于执行的对象的不同产生的效果也就是执行的代码段不同
示例1:封装
# 类的声明
class Animal:
# 属性
name = 'pengpeng'
age = 18
# 方法
def eat(self):
print("----吃东西----")
# 创建对象
animal = Animal()
# 访问属性
print(animal.name)
print(animal.age)
# 访问方法
animal.eat()
说明:在上面的示例中Animal这个类将 name,age这两个属性和eat()方法封装
示例2:继承
# python 继承方式如下
class Dog(Animal):
def bark(self):
print("---汪汪----")
# 创建对象
dog = Dog()
# 访问bark方法
dog.bark()
########### 访问父类中的方法和属性
dog.eat()
print(dog.name)
print(dog.age)
在这个示例中Dog继承了Animal这个类,自身有一个bark的方法,但是dog这个对象可以调用eat()方法以及name,age属性
示例3:多态
# 重写:如果继承的父类中已存在某方法,子类中也有同名方法则产生了重写,例如
class Animal(object):
def eat(self):
print("----吃东西----")
class Dog(Animal):
def eat(self):
print("----吃骨头----")
#定义函数 eat_all
def eat_all(anyone):
anyone.eat()
# 分别用animal,dog调用eat_all方法
animal = Animal()
dog = Dog()
eat_all(animal)
eat_all(dog)
#打印结果为:
#----吃东西----
#----吃骨头----
以上示例说明虽然同一个eat_all方法但是执行的代码段不同,这就是多态