面向對象的思想是高級語言中最好的特性,使程序的開發更加優美,維護起來更加簡潔。
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方法但是執行的代碼段不同,這就是多態