持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的12天,点击查看活动详情
👨🎓作者:Java学术趴
💌公众号:Java学术趴
🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。
🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。
☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!
👋大家好!我是你们的老朋友Java学术趴。
第十一章 面向对象
11.1 面向对象介绍
编程的几种形式
- 面向过程:根据业务逻辑从上到下写代码
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可。
- 面向对象编程:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程。
类和对象
- 类就是一个模板,模板里面可以包含多个函数,函数里实现一些功能。
- 对象则是根据模板创建的实例,通过实例对象可以执行类中的函数。
类相当于制造汽车的图纸,用这个图纸制造出来的汽车是对象
11.2 面向对象关键词
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员: 类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
- 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量: 定义在方法中的变量,只作用于当前实例的类。
- 实例变量: 在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
- 继承: 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
- 实例化: 创建一个类的实例,类的具体对象。
- 方法: 类中定义的函数。
- 对象: 通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
11.2 定义类和对象
11.2.1 定义类
类明和类对象的命名形式和Java一致,分别采用大驼峰和小驼峰的命名方式
# 类的定义形式
class Person(object):
name = '小明'
age = 20
def eat(self):
print('大口大口吃饭')
pass
pass
11.2.2 类对象的创建形式
# 类的定义形式
class Person(object):
name = '小明'
age = 20
def eat(self):
print('大口大口吃饭')
pass
pass
# 对象的创建
people = Person()
# 使用类中的属性和方法。和Java一样,使用点的形式
print('{}的年龄是{}'.format(people.name, people.age))
# 小明的年龄是20
people.eat()
# 大口大口吃饭
11.2.3 实例方法
- 在类的内部,使用def关键字可以定会工艺一个实例方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数 这个self只是占位的,可以换成其他的单词。
# 普通方法
def eat():
print('大口大口吃饭')
pass
# 实例方法。在类中定义的方法称为实例方法,且其中含有一个参数 self
class Animal(object):
type = '小猫'
age = 1
# 实例方法
def eat(self):
print('小猫咪在吃猫粮')
pass
def run(params):
print('小猫在玩耍')
pass
pass
实例方法是归于类的实例对象所有