C语言是一门面向过程的编程语言,
C++、Java这些编程语言都是面向对象。
分门别类:抽取事物的共性,将相似事物归纳为一个类别
面向的对象的核心概念:
类:就是一个事物的类别
|--属性
|--方法
对象(object):某一个类别中的具体案例
python进行面向对象编程
定义类
创建对象
调用对象的属性或者方法,完成具体案例
定义类:
分析类的共性:
静态特征:属性
动态的行为特征:函数 方法method
python,定义需要关键字class
class 类名称(父类):
#定义类的成员
面向对象的专业术语:
OO(oriented object):面向对象
OOP(oriended object programming):面向对象的编程
OOA(oriented objectanalysis):面向对象的分析
OOD(oriented object design):面向对象的设计
OOT(oriented object test):面向对象的测试
python如何定义类:关键字class
class Classname[(superclass)]:
def_init_(self):
def method01():
pass
初始化对象
对象名称 = ClassName() #类似Java中:User ul = new User()
面向对象的三大特征:
封装
继承
多态
【抽象】
封装: 在面向对象中,封装往往有两层意思
1.类封装属性和方法
2.基于安全性属性考虑,面向对象会将属性私有化
一定要记得,python的标识符命名的特殊的规范:
1.所有都是大写的,表示常量
2.大驼峰一般表示类
3._xxx
from xxxx import *
4.__xxx
魔法属性或者方法
5.__xxx
封装属性或者方法
总结:python中,封装共有三种写法,一般而言,哪一种都可以,根据公司的规定写就ok
继承(extend):
类与类之间:目的(复用代码)
python如何实现继承:
classClass_Name(父类):
pass
父类(基类,超类):super class
注意:在python中,如果子类中初始化函数不存在,则会根据继承去初始化父类的初始化函数
如果子类有了自己的初始化函数,要在子类的初始化函数的第一行调用父类的初始化函数
使用super().init([传递对应的属性参数])
方法重写:
方法重写,方法覆盖(override overwrite)
指的是在继承的基础上,子类继承父类的方法不能满足子类使用时,我们就可以重写或覆盖方法。
函数重载(overload)
在强数据类型的编程语言中(如Java、C、C++等)
函数名称相同,函数参数个数不同或者类型不同,从而形成多个同样名称的函数调用时,根据参数的个数或者类型自动完成调用函数
注意:弱数据编程语言中,默认无法实现函数重载,如果要实现,则需要使用特手段
面试题:overload、overwrite、override三者的区别:
补充
super(),这个全局函数比较特殊,在面向对象中,默认指向父类,是一个指针
多态
一种事物的多种状态
面向对象中,多态指的是:在继承的基础上,使用跟大的父类来代替子类的现象,被称为多态简而言之,父类引用指向子类实例
List
ArrayList
ArrayList al = new ArrayList(); //创建子类的方式
List ls = new ArrayList(); //多态
l= ArrayList()
像python、JS等弱数据类型语言,天生支持多态
通过大量的面向对象的案例,进行面向对象的练习
异常处理
软件的容错能力的处理
异常:软件运行过程中的不正常像好像,如果不做处理,则会导致软件无法正常执行而挂掉
异常处理:就是将这种异常进行处理,使得代码能继续正常运行(软件的容错处理)
异常处理,就是软件的稳定性的提高和容错能力的提高
注意:异常和致命性错误的区别
异常是一种错误,但是错误不一定是异常一般致命性的错误,需要修改代码来解决而异常是可以通过异常处理的方案来修复
python提供异常处理的方案
try catch解决方案
try catch
表示通过尝试着抓捕一场来进行异常解决
try:
#有可能出现异常的代码
#代码
.......
except [xx Exception |xxxError]:
#异常处理
except [xx Exception |xxxError]:
#异常处理
[else:
没有异常时执行的代码
]
[finally:
#必须要执行的代码
]
finally语法
不管存不存在异常,都会执行该代码块
所以一些必须要执行的代码建议放在finally中,以保证肯定执行如回收资料、销毁缓存等等
注意:如果函数中,在finally之前存在了return,而且在finally执行前,已经return,则finally中的修改,不会影响注意:但是finally存在return,则之间的就会失效