本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
以下文章來源于 無量測驗之道 ,作者: 無量測驗之道
面向物件編程的核心概念:封裝,抽象,多型、繼承、組合
封裝:
第一個概念:在面向物件編程中,物件將變數和方法集中在一個地方,即物件本身,
第二個概念:指的是隱藏類的內部資料,避免客戶端代碼直接進行訪問,
class Data: def __init__(self): self.list1=[22,33,44,55,66] def chang_list(self,index,num): self.list1[index]=num data1=Data() data1.list1[0]=100 print(data1.list1) data2=Data() data2.chang_list(0,100) print(data2.list1)
抽象:
它是指剝離事物的諸多特性,使其只保留最基本的物質的程序,在面向物件編程中,使用類進行物件建模時就會用到抽象的技巧,
import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod #抽象的物件方法 def sound(self): pass @abc.abstractclassmethod#抽象的類方法 def test1(cls): pass @abc.abstractstaticmethod#抽象的靜態方法 def test2(self): pass class Dog(Animal): def sound(self): print("wang wang") @classmethod def test1(cls): print("class of method") @staticmethod def test2(): print("static of method") dog=Dog() dog.sound() dog.test1() Dog.test1() dog.test2() Dog.test2()
繼承:
1)、將公共的屬性和方法放到父類中,自己只考慮特有的屬性和方法,
2)、覆寫父類的方法即重寫父類方法,在運行中只會呼叫子類中重寫的方法不用呼叫父類中的方法,
3)、子類擁有一個父類叫作單繼承,子類可以擁有多個父類,并且具有所有父類的屬性和方法,
class Student: def study(self): print("學生要學習") def practice(self): print("學習完成要練習") class HighStudent(Student): def study_compute(self): print("高中同學還要學習計算機") hs=HighStudent() hs.study() hs.practice() hs.study_compute()
多型:
1)、指的是為不同的基礎形態(資料型別)提供著介面的能力,介面指的是函式和方法,
2)、顧名思義,多型就是多種表現形態的意思,它是一種機制,一種能力,而非某個關鍵詞,它在類的繼承中得以實作,在類的方法呼叫中得以體現,
3)、多型意味著變數并不知道參考的物件是什么,根據參考物件的不同表現不同的行為方式,
4)、多型以封裝和繼承為前提,不同的子類物件呼叫相同的方法,產生不同的執行效果,它可以增加代碼的靈活度,以繼承和重寫父類的方法為前提,呼叫方法不會影響到類的內部設計
class Animals(object): def __init__(self,name): self.name=name def eat(self): print(self.name+" is eating") class Cat(Animals): def __init__(self,name): super(Cat, self).__init__(name) class Pig(Animals): def __init__(self,name): super(Pig, self).__init__(name) class Person(): def feedAnimal(self,animal): animal.eat() cat=Cat("tom") pig=Pig("peiqi") tony=Person() tony.feedAnimal(cat) tony.feedAnimal(pig)
組合:
1)、通過組合技巧將一個物件作用變數保存在另一個物件中,可以模擬擁有關系,
2)、它是一種將物件或類組合成更復雜的資料結構或構件實作的方法,
3)、在組合中,一個物件可用于呼叫其他模塊中的成員函式,這樣一來,無需通過繼承就可以實作基本功能的跨模塊呼叫,
class Monkey(): def __init__(self,name,owner): self.name=name self.owner=owner class Persons(): def __init__(self,name): self.name=name mike=Persons("mike") mickMouse=Monkey("goldeMonkey",mike) print(mickMouse.owner.name) class A(object): def a1(self): print("a1") class B(object): def b1(self): print("b1") A().a1() bb=B() bb.b1()
總結:
今天和大家分享的是面向物件編程的核心概念:封裝,抽象,多型、繼承、組合,可以結合代碼示例本地去運行著感受這些概念的含義,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234630.html
標籤:Python
