面向对象编程以及Python面向对象

一、面向对象编程

面向对象编程(OOP)作为一种方式,相对于面向过程更加的贴近人的思维习惯。

面向对象是将一个整体问题划分为若干个模块,通过块与快之间的交流来解决问题;而面向过程编程是将一个问题按照解决的步骤一二三四的一个个方法去解决。

面向对象有三大特点:多态、封装、继承。两个主要概念:类,对象。

个人理解面向对象是一个总分的结构,从一个模块中提取出共同的部分就是类,这个类有方法、有成员变量,假设这个类是A。

此时有一个类B在具备A类所有成员变量和方法的同时,还具备一些A类所没有的方法和属性,那么要实现B只需要 extends A类,并在B类中单独实现这些方法和属性即可。当存在C、D、E……等类与B类的情况类似,这些类同时继承A类,就是多态性的体现(不充分)。

举一个例子,有一个类叫做Cat:

class Cat{

腿="有力";

眼睛="亮";

耳朵="可爱";

跑();

跳();

}

有一个类叫做ChineseWhiteCat ,很明显中国大白猫属于猫的一种,拥有猫的全部属性,但同时它还有属于自己的特征:

class ChineseWhiteCat extends Cat {

体型="雄健";

眼睛="一只棕色,一只蓝色";

}

其中体型是Cat类所没有的属性,是ChineseWhiteCat  类自己的,而眼睛有自己的特点,比Cat更加具体。对属性和方法的重写也是多态的体现。

面向对象的优点很多,但是并不意味着面向对象没有缺点。

面向对象的有可能出现过度封装的问题,就想其他领域出现的过度设计、过度服务等等。


二、Python面向对象编程

Python经常被称作脚本语言,因为Python是解释性语言,但是Python是完全的面向对象语言,在Python中的一切都是对象。

有对象就要有类,Python使用class关键字来标志类。类中的方法使用def关键字,类中的方法至少要有一个参数self。例如:

class Cat:

    name="小明"   

    def jump(self):

        print self.name

self大体上相当于Java语言中对象的this关键字。

对象的实例化表达式为:c = Cat()

这与Java在表达式上有所区别,Java的实例化方法为 Cat c = new Cat(),但是二者本质上讲是一样的。

即:创建一个对象Cat(),并将c指向对象Cat()的内存地址。

Python中没有public、private这样区别公有属性和私有属性的关键字,Python使用两个下划线"__"来表示私有属性。


Python类中内置了一些方法:

    构造方法__init__(self,....)在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。

  析构方法__del__(self)在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用。

  还有其他的一些内置方法:

  比如 __cmp__( ), __len( )__等,具体的用法可以参考这篇博文:

  http://www.cnblogs.com/simayixin/archive/2011/05/04/2036295.html

class people:
    name = 'jack'  #公有的类属性
    __age = 12     #私有的类属性

p = people()

print p.name             #正确
print people.name        #正确
print p.__age            #错误,不能在类外通过实例对象访问私有的类属性
print people.__age       #错误,不能在类外通过类对象访问私有的类属性
Python有一个有意思的地方,不用于Java,Python实例属性是不需要在类中显示定义的,例如:

class people:
    name = 'jack'

p = people()
p.age =12
print p.name    #正确
print p.age     #正确

print people.name    #正确
print people.age     #错误



部分内容引自:

http://www.cnblogs.com/dolphin0520/









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值