Python---面向对象的三大特征

# 面向对象的三大特征

- 继承

- 封装

- 多态

# 继承

- 子类可以使用父类定义的内容或者行为等

- 继承的实现

  - 父类:基类,超类:被继承的类, Base Class, Super Class

  - 子类:有继承行为的类

  - 所有类都必须有一个父类

    - 如果没有,则默认为是object的子类

    - 子类可以有多个父类

----------------------------------------------------

# 所有类必须有父类
# 默认是object
class Person1():
pass

class Person2(object):
pass

class Person():
name = "NoName"
age = 0

#父类写在类定义的时候的括号里
class Teacher(Person):
pass

t = Teacher()
print(t.name)

class Bird():
fly = "Yes, we can"
def flying(self):
print("飞呀飞呀")

class BirdMan(Person, Bird):
pass

bm = BirdMan()
bm.flying()
print(bm.name)


#### issubclass检测是否是子类
#### 可以用来检测两个类的父子关系

## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系

print(issubclass(BirdMan, Bird))
print(issubclass(BirdMan, Person))
print(issubclass(BirdMan, Teacher))
--------------------------------------------------
# 构造函数
# 在函数实例化的时候调用的一个函数
# 自动调用
# 要求,第一个参数必须有,一般推荐self
# 不能有return


#构造函数默认继承
class Person():
def __init__(self, name, age):
print("Person=({}, {})".format(name, age))

class Teacher(Person):
pass

t = Teacher()
---------------------------------
# 所有类必须有父类
# 默认是object
class Person1():
pass

class Person2(object):
pass

class Person():
name = "NoName"
age = 0

#父类写在类定义的时候的括号里
class Teacher(Person):
pass

t = Teacher()
print(t.name)

class Bird():
fly = "Yes, we can"
def flying(self):
print("飞呀飞呀")

class BirdMan(Person, Bird):
pass

bm = BirdMan()
bm.flying()
print(bm.name)

## help(issubclass())
#### issubclass检测是否是子类
#### 可以用来检测两个类的父子关系

## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系

print(issubclass(BirdMan, Bird))
print(issubclass(BirdMan, Person))
print(issubclass(BirdMan, Teacher))

#### --------------------------------------

### 构造函数的继承
### 原则上,构造函数默认继承

# 构造函数
# 在函数实例化的时候调用的一个函数
# 自动调用
# 要求,第一个参数必须有,一般推荐self
# 构造函数的调用时间:一般认为在实例化的时候第一个被调用
# 一般不手动调用,实例化的时候自动调用,参数需写入类名称后面的括号中

#构造函数默认继承
class Person():
def __init__(self, name, age):
print("Person=({}, {})".format(name, age))

class Teacher(Person):
pass

t = Teacher("刘大拿", 28)

# ----------------------------
class Bird():
def __init__(self):
print("我被调用了")
return None

b = Bird()

# 构造函数2

class Person():
def __init__(self, name, age):
print(name, age)

p = Person("刘大拿", 19)
posted @ 2019-06-28 15:59  zhouhaiwu  阅读(304)  评论(0编辑  收藏  举报