面象对象

Posted ︻◣_蝸犇り~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面象对象相关的知识,希望对你有一定的参考价值。

oop 面象对象

面向对象的特性:封装、继承、多态,利用 类、对象

class类: 对一类相同属性的对象抽象、蓝图、原型, 在类中定义这些对象都具备的属性

object对象: 类实例化后的实例

Encapsulation封装:对数据的赋值、内部调用对外部用户是透明的
作用:防止数据被随意修改,外部程序不需要关心对象内部构造,通过对外提供的接口直接访问即可

Inheritance继承:父类 ==> 子类 以最少代码的方式实现不同角色的共同点和不同点

Polymorphism 多态:对不同类的对象发出相同的消息将会有不同的行为(一种表现形式,多种形态)

 

技术分享图片
 1 class Animal(object):
 2     def __init__(self,name):
 3         self.name = name
 4 
 5     def talk(self):
 6         raise "Error is raise"
 7 
 8 class Cat(Animal):
 9     def talk(self):
10         return "Mcow!"
11 
12 class Dog(Animal):
13     def talk(self):
14         return Woof! Woof!
15 
16 d = Dog("d1")
17 c = Cat("c1")
18 
19 
20 # Animal.talk(d)
21 # Animal.talk(c)
22 
23 def animal_talk(obj):
24     print(obj.talk())
25 
26 animal_talk(d)
27 animal_talk(c)
多态

 

构造函数、析构函数、属性

def __init__(self): 构造函数、构造方法
def say(self): 类的方法

类 ----》 实例化 ----》 实例对象

__init__构造函数
self.name = name # 属性,成员变量

def sayhi() # 方法, 动态属性

class Role(object):
  nationality = "CN" # 公有属性
  def __init__(self,name):
    self.name = name
    self.__age = 18 # 私有属性
  def __del__(self):  # 析构函数,在函数执行完成后执行的函数
    print("del run...")

r1 = Role("caoy")

Role.nationality = "US" # 更改类的公的属性

公有属性:在类里面定义的属性、类中的函数方法也是公有属性,实例对其进行引用

私有属性:对外不可访问print(r1.__age),对内可访问
只想外面可访问但不可改:
def get_age(self):
  return self.__age
强制访问私有属性:
r1._Role__age

继承

继承: 继承的类称为“基类”、“父类”或“超类”
创建新类称为“子类”或“派生类”
一个类可以继承多个基类
通过“继承”和“组合”实现

实现方式: 实现继承(不需要额外代码)、接口继承(重新父类的方法)

技术分享图片
 1 class Person(object):
 2 
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6         self.sex = "noraml"
 7 
 8     def talk(self):
 9         print(Person is talking....)
10 
11 class WhitePerson(Person):
12     pass
13 
14 
15 class BlackPerson(Person):
16     def __init__(self,name,age,strength):
17         Person.__init__(self,name,age)
18         self.strength = strength
19 
20         print(self.name, self.age, self.sex, self.strength)
21 
22     def talk(self):
23         print("black person [%s] is blala..." % self.name)
24 
25     def walk(self):
26         print("is walking ...")
27 
28 b = BlackPerson("LiLei",30,"strong")
29 
30 w = WhitePerson("HanMei", 18)
31 
32 b.talk()
33 w.talk()
继承

















以上是关于面象对象的主要内容,如果未能解决你的问题,请参考以下文章

面象对象设计6大原则之二:开放封闭原则

面象对象语法

C++面象对象编程Tips之一

php面象对象魔术方法的使用

201771010128王玉兰《面象对象程序设计(Java)》第七周学习总结

面象对象的反射和单列模式