先来点编外话:
1,python 属于解释式语言,解释器会翻译一行执行一行,数据类型属于弱类型,也可以叫动态类型,也就是不用像java ,c之类需要先声明(在内存中开辟一定大小的空间给变量),引用(一种A指向a的过程,类指针)之后才可以使用变量,和其他的PHP,javascript语言一样,var i=1; 或者 var i=”abc” 都可以,而不像java :int i 或 int i=123,i 变量只能放int 这个类型的数据而不能放非int的类型,如:int i=”abc”,除非可以自动转化情况除外,这就是强类型,
2,数据封装、继承和多态是面向对象的三大特点:
1)封装就是把东西装起来,不能直接获取得到,只能通过其他的方法获取得到;封装是因为变量在定义或者申明的时候增加了修饰符,修饰符就是一个符号,告诉编译器或者解释器这个变量是一个公共的(public),私有的(private),被保护的,局部能访问获取的(protected),想把数据封装起来私有的或者保护的最合适
2)继承和遗产继承,产业继承,甚至遗传意思相近,只要继承了某个类,就用有了这个类的特性,比如,可以用继承类也就是父类的方法(函数)和属性(数据),比如,如果你有个牛逼的爹,那么你继承过来产业,你的事业会比白手起家发展的更快,更强。面向对象的继承也一样,不过,父辈都是白手创业也不要太过于依赖,他们提供的都是最最基本的,大众化的功能。如果想做的更比父辈更好,更牛逼,就需要继承父辈的基础上再接再厉。不断优化管理,市场等等其实这就是多态。
3)多态就是多样性,更具体,更生动。一个父亲生了10个儿子,父亲做服装起家,10个儿子继承了父亲的产业,大儿子继承了服装的加工,办了工厂,二儿子继承了服装设计,做起了时装设计,三儿子只继承了父亲的部分钱和父亲理财经验,成立了金融投资业。其他儿子也一样。在面向对象里也一样,子类继承了父类也可以叫基类或者超类,就拥有了父类的全部功能,但是这些功能并不一定适合子类的业务需要,只能用到一部分,这个时候就是重新写这个方法,java 里叫重写,用@override 注释。就像旺旺广告一样,这句话就是:我要比你强,我要比你强!继承了还要发扬光大,更优秀,就是多态。多样性。
3,面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板。类更像是基因,或者说有相似,类似特点的一种归类,比如:星座的性格归类,属相,血型等性格的归类,类,就是个模版。不同模版的组合,具体化就是实例,说,我们生个女孩,女孩的特征是:性格更温柔,器官差异,喜欢漂亮衣服等等,女孩就是类,就是模版,一天,张三生了个女孩,这个女孩是就一个实例,她有女孩的大多特性,也有自己和其他女孩不一样的特性:姓名,身份证,指纹,DNA,瞳孔等,也和身边很多女孩不一样,喜欢吃很酸的食物,不喜欢洗澡等等。这个叫张二妞的女孩就是一个实例,她爸计划要个女孩,这个女孩只是一个抽象的类。但张二妞给她爸爸实现了。常年道:这孩子长大真像他爹,就像一个模子刻出来的一样。这句话就很好说明了类和实例之间的关系,注意,是像爸爸,不是就是爸爸。
4,程序的思想有时候比一行行的代码更重要,它会指引一种技术的前进。定义一个类其实就是定义一种数据类型,这个数据类型和普通的类型没有什么两样如,list,taple,dict。在java 里有包装类,Integer,Long,Short,Boolean,Float,Double,Byte,Character在面向对象的世界,任何东西都是对象,所以的功能都是堆积木一样推挤起来。