面向对象程序设计语言的三大特征

网上有关“面向对象程序设计语言的三大特征 ”话题很是火热,小编也是针对面向对象程序设计语言的三大特征寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

封装性 、继承性和多态性构成了面向对象程序设计语言的三大特性 。

封装性是基础,继承性是关键 ,多态性是扩充。

多态性是指对不同类的对象发出相同的消息将会有不同的行为。

消息主要是指对类的成员函数的调用,不同的行为是指不同的实现 。

本部分主要介绍多态性;动态联编;虚函数;纯虚函数和抽象类等重要内容。

函数重载

函数重载是多态性的一种简单形式,它是指允许在相同的作用域内 ,相同的函数名对应着不同的实现。

函数重载的条件是要求函数参数的类型或个数有所不同 。对成员函数的重载有以下三种表达方式:

1、在一个类中重载;

2、在不同类中重载;

3 、基类的成员函数在派生类中重载。

具有相同名字的重载函数是在编译时区分的,有以下三种区分方法:

1、根据参数的特征加以区别,例如:

show(int, char);

show (char*, float);

2、使用类作用域符“::”加以区分 ,例如:

Circle::show();

Point::show();

3 、根据类对象加以区分 ,例如:

acircle.show()调用Circle::show()

apoint.show()调用Point::show()

除了函数重载这种简单形式之外,C++ 还提供了一种更为灵活的特征机制——虚函数。

虚函数允许函数调用与函数体的联系在运行时才给出 。当需要同一接口、多种实现时,这种功能显得尤其重要 。

在讲述虚函数的概念之前 ,先介绍子类型及静态联编和动态联编的相关内容。

子类型

有一个特定的类型S,当且仅当它至少提供了类型T 的行为,则称类型S 是类型T 的子类型。

在继承关系中 ,若类B 是类A 以公有继承形式产生的派生类,则类B 包含了类A 的行为,并且它本身还可具有新的行为 ,可称类B 是类A 的一个子类型 。

若类B 是类A 的子类型,则类A 对象可操作的函数,类B 的对象也可以进行操作 ,称类B 适应类 A。

子类型的重要作用就在于类型适应,即在公有继承方式下,派生类的对象、指向派生类对象的指针和派生类对象的引用都适应于基类的对象 、指向基类对象的指针和基类对象的引用所能使用的场合。

子类型关系是不可逆的 。已知类B 是类A 的子类型 ,而认为类A 也是类B 的子类型是错误的。

例如:假设M 是基类 ,N 是以公有继承方式产生的派生类,函数void fun(M& P) 以基类M 的引用作为形参数,则

void main()

{

M m(7),q;

N n(3,8);

q=n; //派生类对象赋与基类对象

M *pm=new M(6);

N *pn=new N(5,9);

pm=pn; //派生类指针赋给基类指针

fun(*pn); //实参为派生类传递给基类的引用

}

由于子类型的类型适应性 ,main()中被注释的语句都是合法的。

根据类型适应性,在公有继承方式下,指向基类和派生类的指针变量是相关的 。如果B 是基类 ,D 是从B 公有派生出来的派生类,则在C++ 中,指向基类B 的指针P 也可以指向派生类D。当P 指向派生类D 的对象时 ,利用指针P 可以访问从基类B 继承的成员,但派生类D 自己定义的成员不能用P 访问(除非用显式类型转换)。

例如:下面是指向基类对象的指针指向派生类对象,从而访问从基类继承的成员的例子 。

#include <iostream.h>

#include <string.h>

class B

{

char name[80];

public:

void put_name(char *s)

{ strcpy(name,s); }

void show_name()

{ cout<<name<<“\n”; }

};

class D: public B

{

char phone_num[80];

public:

void put_phone(char *num)

{

strcpy(phone_num,num);

}

void show_phone()

{

cout<<phone_num<<“\n ”;

}

};

main()

{

B *p; B Bobj; D *dp; D Dobj;

p=&Bobj;

p->put_name(“Zhang Fang”);

p=&Dobj;

p->put_name(“Wang Ming”); //访问从基类继承的成员函数

Bobj.show_name();

Dobj.show_name();

dp=&Dobj;

dp->put_phone(“83768493 ”); //访问自己的成员

dp->show_phone();

p->show_phone(); //error!指向基类指针不能访问派生类定义的成员

((D *)p)->show_phone(); //强行类型转换

}

注意:希望用基类指针访问其公有派生类的特定成员 ,必须将基类指针用显式类型转换为派生类指针。根据类型适应性的原则,一个指向基类的指针可以用来指向其公有派生类的任何对象,这是C++ 实现运行时多态性的关键。

Python是一门面向对象的语言 。面向对象都有三大特性:封装 、继承、多态 。

1、封装

隐藏对象的属性和实现细节 ,仅对外提供公共访问方式。在python中用双下划线开头的方式将属性设置成私有的 。

好处:1. 将变化隔离;2. 便于使用;3. 提高复用性;4. 提高安全性 。

2 、继承

继承是一种创建新类的方式 ,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类 ,新建的类称为派生类或子类。即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待 。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系

Python中类的继承分为单继承和多继承

3、多态

一种事物的多种体现形式 ,函数的重写其实就是多态的一种体现 。Python中,多态指的是父类的引用指向子类的对象 。

实现多态的步骤:

1、定义新的子类

2 、重写对应的父类方法

3、使用子类的方法直接处理,不调用父类的方法

多态的好处:

(1)增加了程序的灵活性

(2)增加了程序可扩展性

关于“面向对象程序设计语言的三大特征”这个话题的介绍,今天小编就给大家分享完了 ,如果对你有所帮助请保持对本站的关注!

本文来自作者[白衣酒客]投稿,不代表百盟号立场,如若转载,请注明出处:https://wk.bamasay.cn/baimeng/4364.html

(31)

文章推荐

  • 送别送什么花

    网上有关“送别送什么花”话题很是火热,小编也是针对送别送什么花寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。问题一:谁知道朋友离别要送什么花?三色堇--思念红康乃馨--亲情、思念毋忘我花语:友谊万岁、永远思念凤尾耆--思念万寿菊:友

    2026年04月11日
    48321
  • 植物大战僵尸禅境花园的植物问题

    花园的陆生植物好像除了金盏花是26种,夜生植物种类是比格子少一(好像是8个格子,共7种),水生3种。一共11种颜色。目前我了解的记录貌似是5000+关,根据网上代码帝解释。真的是没有尽头的。关于植物大战僵尸无尽版疑问那是大R的方法,要花费不少品刷和增强卷轴,一般普通的非R或小R为了节省增强卷轴和品刷

    2026年04月17日
    56303
  • 必备科技“哥哥跑得快透视”详细透视辅助教程官方正版下载

    >>您好:这款游戏确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,1.推荐使用‘,通过添加客服安装这个软件.打开.2.在设置DD辅助功能DD微信麻将辅助工具里.

    2026年04月18日
    28312
  • 卫生材料费医保可以报销吗

    网上有关“卫生材料费医保可以报销吗”话题很是火热,小编也是针对卫生材料费医保可以报销吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。材料费不可以报销。医疗保险的不予支付的项目一、服务项目类。1、挂号费、院外会诊费、病历工本费等;2、出诊费、检查治疗加急费、点

    2026年04月25日
    40314
  • 强力推荐“微信红包控制尾数软件挂”开挂(透视)辅助教程

    亲,您好!这款游戏可以开挂,确实是有挂的,软件了解加QQ群咨询。很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的1、起手看牌2、随意选牌3、好牌机率4、控制牌型5、(注)公司软件防封号、防检

    2026年04月30日
    52316
  • 可用版本“小程序麻将真的能开挂吗”(透视)开挂辅助脚本+详细开挂安装教程

    是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我QQ客户群下载使用。新九哥怎么开挂?可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义新九哥怎么开挂?系统规律,只需要输入自己想要的开挂功能,一键便可以生成出新九哥怎么开挂?专用辅助器,不管你是

    2026年05月01日
    28315
  • 实测神器辅助“微信埋雷发10个红包尾数控制软件”(透视)开挂详细教程

    亲,您好!这款游戏可以开挂,确实是有挂的,软件了解加QQ群咨询。很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的1、起手看牌2、随意选牌3、好牌机率4、控制牌型5、(注)公司软件防封号、防检

    2026年05月20日
    25313
  • 玩家必读“科乐斗地主记牌器”附开挂脚本详细步骤

    >>您好:这款游戏确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,1.推荐使用‘,通过添加客服安装这个软件.打开.2.在设置DD辅助功能DD微信麻将辅助工具里.

    2026年05月20日
    20317
  • 开挂辅助工具“功夫川麻如何才赢”(作弊)辅助透视教程

    无需打开直接搜索微信,操作使用教程:本司针对手游进行,选择我们的四大理由: 1、咨询,软件助手是一款功能更加强大的软件!2、自动连接,用户只要开启软件,就会全程后台自动连接程序,无需用户时时盯着软件。 3、安全保障,使用这款软件的用户可以非常安心,绝对没有被封的危险存在。&nbs

    2026年05月23日
    18319
  • 强力推荐“有没有微信红包牛牛”详细透视辅助教程

    >>您好:这款游戏确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,1.推荐使用‘,通过添加客服安装这个软件.打开.2.在设置DD辅助功能DD微信麻将辅助工具里.

    2026年05月24日
    9321
  • 实测分享“和和麻将开挂”开挂辅助软件教程

    您好:wepoker网页版透视方法这款游戏可以开挂,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的1.wepoker网页版透视方法这款游戏可以开挂,确实是有挂的,通过点击右下

    2026年05月25日
    13301
  • 教程更新!:微信抢红包怎么自动抢”开挂详细教程

    您好:这款游戏是可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的1.这款游戏是可以开挂的,确实是有挂的,通过添加客服微信【添加图中微信】安装这个软件.打开.2.在&

    2026年05月25日
    12312

发表回复

本站作者才能评论

评论列表(3条)

  • 白衣酒客的头像
    白衣酒客 2026年04月28日

    我是百盟号的签约作者“白衣酒客”

  • 白衣酒客
    白衣酒客 2026年04月28日

    本文概览:网上有关“面向对象程序设计语言的三大特征”话题很是火热,小编也是针对面向对象程序设计语言的三大特征寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够...

  • 白衣酒客
    用户042807 2026年04月28日

    文章不错《面向对象程序设计语言的三大特征》内容很有帮助