python--面向对象之三个特性:封装、继承、多态

一、面向对象简介

1、面向对象不是所有的情况都适用
2、面向对象编程
  a.定义类
    class 类名:
      def 方法1(self, 参数名):
        方法体

  b.根据类创建对象,使用对象去执行类中的方法
    obj = 类名()
    obj.方法名
3、self,形参,python内部传递

4、函数式编程与面向对象式编程的区别


示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
面向对象编程初识
"""
#先定义一个类
class Hello():
#定义一个方法
def sayHell(self, name):
print(‘欢迎您!‘ + name)
#创建一个对象
obj = Hello()
obj.sayHell(‘yusheng_liang‘)

二、面向对象--封装
应用场景:
  1、当同一类型的方法具有相同参数时,直接封装到对象即可
  2、把类当做模板,创建多个对象(对象内封装的数据可以不一样)

  3、类名+括号
    自动执行类中的__init__方法:创建了一个对象
    在__init__方法中执行具体封装的操作
    __init__有一个特殊名字:构造方法(初始化)

示例一:面向对象之封装,非主流的方式

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
封装,非主流的方式
"""
class Foo():
def add_foo(self):
print(self.name) #打印已经封装好的对象属性
def del_foo(self):
print(self.name)

#创建一个对象
obj1 = Foo()
#在对象中封装数据
obj1.name = ‘yusheng_liang‘
#执行方法,执行过程中可以根据self去obj1中取已经封装在里面的数据
obj1.add_foo()

示例二:面向对象之封装,使用构造方法的方式封装数据

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
封装,使用构造方法的方式封装数据
"""
class Foo():
def __init__(self, args):
"""
构造方法
:param args:
"""
self.name = args

def add_foo(self):
print(self.name) #打印已经封装好的对象属性
def del_foo(self):
print(self.name)

#创建一个对象,实例,并且将yusheng_liang封装到对象中
obj1 = Foo(‘yusheng_liang‘)

# #在对象中封装数据
# obj1.name = ‘yusheng_liang‘

#执行方法,执行过程中可以根据self去obj1中取已经封装在里面的数据
obj1.add_foo()

三、面向对象--继承

  1、派生类可以继承基类中所有的功能
  2、派生类和基类同时存在相同的功能时,优先找派生类的
  3、python类可以同时继承多个类(C#/java不可以),用逗号隔开,优先找自己的功能,再在继承类中从左到右的顺序查找功能

  4、多继承时的查找顺序如下:

示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
面向对象之继承
"""
#定义一个父类,又叫基类
class Animals:
def say(self):
print(‘Hello, I am saying‘)
def run(self):
print(‘I am running‘)

#定义子类,又叫派生类,在括号中写上父类名
class Cat(Animals):
def __init__(self, name):
self.name = name

def sing(self):
print(self.name + ‘ 喵喵喵‘)

#定义子类,又叫派生类,在括号中写上父类名
class Dog(Animals):
def __init__(self, name):
self.name = name

def sing(self):
print(self.name + ‘ 汪汪汪‘)

cat1= Cat(‘小猫咪‘)
cat1.sing()
cat1.say()

dog1 = Dog(‘小狗狗‘)
dog1.sing()
dog1.run()

示例结果:

四、面向对象--多态,多种形态
  python本身支持多态

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
多态
"""

class Foo:
def f1(self):
print(‘Foo‘)

class Bar:
def f1(self):
print(‘Bar‘)

def func(arg):
print(arg)

func(Foo())
func(Bar())

原文地址:https://www.cnblogs.com/june-L/p/11669081.html

时间: 2024-10-24 20:53:25

python--面向对象之三个特性:封装、继承、多态的相关文章

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

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

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

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

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

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

面向对象三大特性:封装,继承,多态(一,封装和继承)

封装.继承和多态是面向对象程序设计的三个核心特性. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂.更深入的程序开发. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易. 一.封装 封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,

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

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

Python全栈开发——面向对象的三大特性(继承 & 多态 &封装)

1.继承 1.两层意思改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o: def __init__(self,name,temperature): self.name=name self.temperature=temperature def turn_ice(self): if self.temperature<0: print('温度太低,变成[%s]' %self.name

面向对象三大特性:封装,继承,多态(二、多态)

多态 一,多态的概念 多态(polymorphism), 是指一个名字可以有多种语义.在面向对象语言中,多态是指在一棵继承树中的类中可以有多个同名但不同方法体及不同形参的方法.通常有两种途径实现多态:方法的重载和覆盖. 多态性允许以统一的风格处理已存在的变量及相关的类.多态性使得向系统里增加新功能变得容易.继承性和多态性是降低软件复杂性有有效技术. 二,多态的实现 1.方法的重载 方法重载时: 参数必须不同.参数个数不同或类型不同. 返回值可以相同,也可以不同. 重载的价值在于它允许通过使用一个

面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)

多态(polymoph)指的是“执行期间(而非编译期间)”判断所引用对象的实际类型.,根据其实际的类型调用其相应的方法. 多态也叫动态绑定,也叫迟绑定. 多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象

JS面向对象基础篇(封装 继承 多态)

首先我们要创建一个对象,我们可以利用javascript的语法特征,以类的思想来创建对象 一:封装 (1)原始方法,代码如下 <script> var obj=new Object(); obj.name='Tom'; //给对象添加属性 obj.sex=22; obj.showName=function(){ //给对象添加方法 alert(this.name); } obj.showAge=function(){ alert(this.age); } obj.showName(); //'

面向对象的四大特征 封装 继承 多态 抽象

1.封装 广义: 类 方法 包 的定义本身就是一种封装 狭义: 在设计一个类的时候 将所有的属性设置为私有的 并对各个私有的属性设计相应的 存/取方法 来完成对属性的使用 私有化只能代表封装的特性 可以说私有是封装的一种 不能说封装即是私有 封装的好处: 隐藏实现细节 提供公共的访问方式 提高了安全性 封装的原则: 将不需要对外提供的内容都封装起来 把属性隐藏 提供公共的方法进行访问 private关键字***** 关键字的特点: 1.私有的意思 2.是一个权限修饰符 3.可以修饰成员变量 和