面向对象基础

原创 2016年06月01日 15:16:56
  • 面向对象在不同的情况下适用
  • c#, java:只有面向对象编程
  • Ruby,Python:函数式编程 + 面向对象

定义对象编程格式

    定义类
        class 类名:
            def 方法1(self, bb)
                pass

    执行类
        根据类创建对象
        使用对象执行类中方法

“self”

定义方法中有一个self参数,self代表的意思是本身,也就是把它的类作为一个参数,自动传入

封装

封装方法1(基本不用)
直接在self本身封装参数 backend

class Oldboy:
def fetch (self):   #不在方法内指定参数,而是把参数与self参数结合到一起
print(self.backend)     #打印self中的backend参数(因为他们俩是结合到一起的)

def add_record(self, backend, record):
print(backend, record)

obj1 = Oldboy()
obj1.backend = "www.oldboy.org"     #把self对象与backend参数封装起来
obj1.fetch()

封装方法2
通过构造方法给self封装参数

class Oldboy:
def __init__ (self,bk):     #__init__所在的这个方法,叫做构造方法
self.backend = bk   #普通字段:给self封装参数
def fetch(self):
print(self.backend)

obj1 = Oldboy("www.oldboy.org")     #在创建对象的时候,可以直接在后面上传参数
obj1.fetch()

_init_ 构造方法,一步操作既创建对象,又封装内容的过程叫做初始化

_del_ 解释器销毁对象时自动调用,自带的,不用写。这个过程析构方法

封装使用场景:

  • 当同一类型的方法具有相同参数时,直接封装到对象即可
  • 把类当成模板,创建多个对象(对象内封装的数据可以不一样)

继承

  • 被继承类,也就是父类,称为基类
  • 继承者类,也就是子类,称为派生类
class Animals:
    def chi(self):
        print(self.Name + "吃")

    def he(self):
        print(self.Name + "喝")

class Dog(Animals):     #继承那个类,就在类名后面添加将继承的基类名
    def __init__(self, name):
        self.Name = name

    def jiao(self):
        print(self.Name + "汪")

xiao = Dog("小明")
xiao.chi()
xiao.he()
xiao.jiao()

多继承

Python可以继承多个类,(c#,java不行)
class Animals:
    def chi(self):
        print(self.Name + "吃")

    def he(self):
        print(self.Name + "喝")

class als:
    def chou(self):
        print(self.Name + "抽")

class Dog(Animals, als):     #继承多个类,基类名以逗号分隔
    def __init__(self, name):
        self.Name = name

    def jiao(self):
        print(self.Name + "汪")

xiao = Dog("小明")
xiao.chi()
xiao.he()
xiao.jiao()
xiao.chou()

多继承执行顺序

  • 派生类和基类同时存在的方法,优先执行派生类中的方法。
  • 运行级别:本类 =》从左向右第一个基类 =》第二个基类

下图,蓝箭头代表继承关系,一个类可以继承多个基类,基类也可以继承,不同基类可能基层通一个基类。关系图如下所示。运行顺序按照从左到右的顺序,如果左边的基类B还有继承类D,那么先查找D,然后再查找C,从左到右执行的情况,在这里出现变动。
这里写图片描述

多态

多种形态,在其他语言中要给函数的参数定义一个类型,在Python中参数的类型不用固定的定义,而是根据传入参数的类,来决定参数的类型。

PHP,Python本身就是支持多态,不用刻意去做。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java面向对象基础知识点复习

  • 2017年11月08日 08:18
  • 32KB
  • 下载

TypeScript 面向对象基础知识

孙广东  2016.4.5JavaScript如今到处都是,web、服务器(通过NodeJS)、移动应用(通过各种框架),所有这些,TypeScript都可以使用,并且可以为JavaScript扩展出...

java面向对象基础02

  • 2015年08月05日 20:30
  • 315KB
  • 下载

Java核心基础(2) 面向对象

Java面向对象基础面试题总结(2)1、Overload和Override(OverWrite)有什么区别?Overload 的方法是否可以改变返回值的类型?  1)重载Overload是方法的重载,...
  • Elenal
  • Elenal
  • 2016年05月09日 11:07
  • 748

Java4Android 14_面向对象基础(三)

  • 2014年09月07日 10:38
  • 15.75MB
  • 下载

Java基础[03-面向对象].

  • 2015年01月27日 21:25
  • 206KB
  • 下载

Java基础:面向对象三大特征、五大原则

面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特...

java基础面向对象数据库

  • 2013年05月24日 15:39
  • 661KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象基础
举报原因:
原因补充:

(最多只允许输入30个字)