zoukankan      html  css  js  c++  java
  • 封装 继承 多态 派生 组合定义 && 对象之间交互

    此篇博客 主在阐述类的几大特性的定义

    1.定义

    组合:就是一个拥有一个属性,这个属性是另一个类,没有继承关系,旨在将两个类的功能组合起来,或者一个类想调用另一个类的功能

    继承:创建类的方式,被继承的类称为父类或基类,继承的类称为子类或派生类

    封装:封:存储名称空间私有属性不对外开放  只提供接口

    派生:指的是字类继承父类的方法和属性,并派生出自己独有的属性和方法 ,若字类中存在与父类相同的方法,则该方法为重写

    多态:一个事物有多种表现形式   

                1.多态的表现形式:继承类(不能改变父类的属性和方法也不能派生出新的方法)

                 2.继承抽象类    metaclass= abc.ABCMeta    @abc.abstarctmethod 

                 

    import abc
    class
    Animal(metaclass=abc.ABCMeta): # 方法 吃 @abc.abstractmethod def eat(self): pass

                 3.鸭子类型      python 崇尚鸭子类型   一般在公司中推崇鸭子类型

                    不同的对象,只要长得像鸭子,动作行为像鸭子,那它就是鸭子

                    开发过程中,不同的对象,先抽象出相同类型的方法,给他们定制一套统一的规范 ,所有的类在定义时都按照统一的规范进行编写

                     

    2.对象间的交互

    class Garen:        #定义英雄盖伦的类,不同的玩家可以用它实例出自己英雄;
        camp='Demacia'  #所有玩家的英雄(盖伦)的阵营都是Demacia;
        def __init__(self,nickname,aggressivity=58,life_value=455): #英雄的初始攻击力58...;
            self.nickname=nickname  #为自己的盖伦起个别名;
            self.aggressivity=aggressivity #英雄都有自己的攻击力;
            self.life_value=life_value #英雄都有自己的生命值;
        def attack(self,enemy):   #普通攻击技能,enemy是敌人;        attck方法传入对象
            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。
    class Riven:
        camp='Noxus'  #所有玩家的英雄(锐雯)的阵营都是Noxus;
        def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54;
            self.nickname=nickname  #为自己的锐雯起个别名;
            self.aggressivity=aggressivity #英雄都有自己的攻击力;
            self.life_value=life_value #英雄都有自己的生命值;
        def attack(self,enemy):   #普通攻击技能,enemy是敌人;
            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。 

    实例出俩英雄

    >>> g1=Garen('草丛伦')
    >>> r1=Riven('锐雯雯')

    交互

    >>> g1.life_value
    455
    >>> r1.attack(g1)
    >>> g1.life_value
    401 

              

           

  • 相关阅读:
    WCF基础教程之开篇:创建、测试和调用WCF
    程序员必须知道的几个Git代码托管平台
    2015继续任性——不会Git命令,照样玩转Git
    何必苦等VS2015?来看看VS2013下实现移动端的跨平台开发
    Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio
    (转)创建Graphics的三种方法
    sql自增长列重新从1计算
    IT之人生感悟
    c# 高效率导出多维表头excel
    SQL 之witn as语法
  • 原文地址:https://www.cnblogs.com/bigbox/p/11936995.html
Copyright © 2011-2022 走看看