面向对象之 封装 继承 多态

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

class Role(object):   #继承object类
    ac = None      #脚本一执行跟着类一起存到了内存        类变量

    #类变量和实例变量的区别:
    #类变量脚本执行跟着类一起存到了内存,不管是否调用都存在,实例变量是存在实例内的,

    def __init__(self,name,role,weapon):   #初始化方法   实例化后自动执行
        #self 代表实例本身.谁调用就是谁。   name role,weapon真正实例化后存在P1 t1没有实例化前调用不到   ac是存在类里的
        self.name = name      #实例变量
        self.role = role
        self.weapon = weapon

    def buy_weapon(self,weapon):
        print(‘%s is buying [%s]‘ %(self.name,weapon))
        self.weapon  = weapon    #

p1 = Role("SB",‘Police‘,‘AK47‘)     #P1 实例   Role 类    self代表实例本身   把一个抽象的类变成一个具体的对象的过程叫实例化
p2 = Role("38",‘Thief‘,‘B51‘)

p1.buy_weapon(‘B10‘)      #==Role.buy_weapon(p1,‘AK10‘)
p2.buy_weapon(‘B11‘)

print("P1",p1.weapon)
print("P2",p2.weapon)

  

继承

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

class SchoolMember(object):
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

        self.enroll()    #只要一实例化就自动调用 enroll方法

    def enroll(self):
        print("SchoolMember [%s] is enrolled!" %self.name)
    def tell(self):
        print("My name is [%s]" %self.name)
class Teacher(SchoolMember):
    def __init__(self,name,age,sex,course,salary):    #不写__init__  就是继承了父类SchoolMember的init。先重写父类的init   namne/age/sex在继承
        super(Teacher,self).__init__(name,age,sex)   #super继承。上面重写了父类的name  age  sex  super再继承回来
        #另一种写法  SchoolMember.__init__(self,name,age,sex)    旧式写法  经典类和新式类的区别
        self.course = course
        self.salary = salary
    def teaching(self):
        print(‘Teacher [%s] is teaching [%s] ‘ %(self.name,self.course))

class Student(SchoolMember):
    def __init__(self,name,age,sex,course,tuition):
        super(Student, self).__init__(name,age,sex)
        self.course = course
        self.tuition = tuition

    def pay_tuition(self):
        print("cao, stutent [%s] paying tuition [%s]" %(self.name,self.tuition))

t1 = Teacher("SB",22,‘F‘,‘PY‘,1000)
t2 = Teacher("DSB",23,‘F‘,‘PY‘,2000)

s1 = Student(‘JB‘,11,‘F‘,‘PY‘,9000)
s2 = Student(‘DJB‘,12,‘F‘,‘PY‘,8000)

#print(s2.name)

t1.teaching()
t1.tell()
s1.pay_tuition()
s1.tell()

  

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

#多态

class Animal:
    def __init__(self, name):    # Constructor of the class
        self.name = name
    def talk(self):              # Abstract method, defined by convention only
        raise NotImplementedError("Subclass must implement abstract method")

class Cat(Animal):
    def talk(self):
        return ‘Meow!‘

class Dog(Animal):
    def talk(self):
        return ‘Woof! Woof!‘

animals = [Cat(‘Missy‘),
           Dog(‘Lassie‘)]

‘‘‘
用函数方式实现,不用上面的列表实现
def animal_talk(obj):
    print(obj.talk())

c = Cat("miaomi")
d = Dog("wangwang")

animal_talk(c)
animal_talk(d)
‘‘‘

for animal in animals:
    print (animal.name + ‘: ‘ + animal.talk())

#多态实现接口的统一化,统一调用animal 无需关心里面的dog和cat

#面向对象继承封装多态的总结:封装可以隐藏实现的细节,使得代码模块化;继承可以扩展已存在的代码模块(类);他们的目的都是为了-----代码重用。
#而多态则是为了实现另一个目的----接口重用!多态的作用就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用

  

 
时间: 2024-10-18 05:21:54

面向对象之 封装 继承 多态的相关文章

C#面向对象编程 封装 继承 多态

  C#面向对象编程 什么是面向对象? 面向对象编程是上个实际六十年代继面向结构编程之后提出的一个新的编程思想 封装,继承,多态 封装,继承,多态是面向对象编程的核心: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型 意义是:保护数据不被破坏(例如一台电视机我们能使用它但是不能随意改变内部的电路) 关键字:private,public,protected,internal Public string name;

面向对象之封装,继承,多态的理解

封装 1.什么是封装 封装(encapsulation)又叫隐藏实现(Hiding the implementation).就是只公开代码单元的对外接口,而隐藏其具体实现. 其实生活中处处都是封装,手机,电脑,电视这些都是封装.你只需要知道如何去操作他们,并不需要知道他们里面是怎么构造的,怎么实现这个功能的. 2.如何实现封装 在程序设计里,封装往往是通过访问控制实现的.C++,Java,AS3中都有 Public, Protected, Private 等访问控制符.通过用Public将信息暴

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个具体的个体 所以,面向对象即我们专注对象来处理问题,通过从一个个具有属性和功能的类中拿到对象来处理问题. 下面我们再来细说下面向对象的三大特征:继承/封装/多态 一.继承 在PHP中我们主要通关E

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ? 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类. ? 在Python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号,就可以完成继承关系.单纯的从代码的层面上来看当两个类具有相同的功能或者特征的时候就可以使用继承.提取一个父类,这个父类中编写者两个类相同的部分,然后两个类分别去继承这个类就可以

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在