C++中继承与多态

C++中的继承与多态是比较重要的一点,大致来讲解一下继承与多态的特点。继承是子类运用基类的成员以及成员函数,继承的方式分为public,protected以及private,今天主要讲解的是多态,多态是基类函数必有virtual。且是父类的指针指向子类的对象,例如:

#include <iostream>

#include <string>

using namespace std;

//

class A

{

public:

A()

{

cout << "A()" << endl;

}

~A()

{

cout << "~A()" << endl;

}

virtual void fun1()

{

cout << "A::fun1()" << endl;

}

virtual void fun2()

{

cout << "A::fun2()" << endl;

}

int a;

};

class A1:public A

{

public:

A1()

{

cout << "A1()" << endl;

}

~A1()

{

cout << "~A1()" << endl;

}

virtual void fun1()

{

cout << "A1::fun1()" << endl;

}

void fun2()

{

cout << "A1::fun2()" << endl;

}

int a1;

};

void show(A *pb)

{

pb->fun1();

}

int main()

{

A a;

A1 a1;

show(&a1);

/*a1.fun1();*/

/*cout << sizeof(a1) <<endl;*/

getchar();

return 0;

}

show 函数中调用父类的指针将会产生父类的函数,调用子类的指针就将会产生子类的函数,这就是多态。

时间: 2024-10-13 12:14:41

C++中继承与多态的相关文章

c语言中继承和多态的简单实现

C语言本身是不支持继承和多态的,但其实在 C 的世界里,有一套非常有名的面向对象的框架,用的也非常广,那就是 GObject,它是整个图形界面开发库 GTK 的基石,在IBM developerWorks上有一篇很好的文章介绍 GObject<GObject对象系统>.另外,在 Linux 内核里面也大量使用了面向对象的思想,比如虚拟文件系统,设备驱动等模块,在 lwn上有两篇文章就讲到了内核中的面向对象,详细请看:<Object oriented design patterns in

[转]Java中继承、多态、重载和重写介绍

什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果

class中继承和多态简介

1.了解父类和子类的关系: 1 class Animal(object): 2 def run(self): 3 print("animal is running") 4 def run_twice(self): 5 self.run() 6 self.run() 1 class fish(Animal): 2 def run(self): 3 print("fish is not run, is fishing...") 1 class Tortoise(Anim

java中继承和多态

转自原文http://blog.csdn.net/xinxin19881112/article/details/2944760 若冒犯博主,请勿见怪! 1.  什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类更具体.父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为. 在继承关系中.父类和子类需要满足is-a的关系.子类是父类. 表

继承、多态、封装、接口

继承部分 继承(加上封装和多态性)是面向对象的编程的三个主要特性(也称为"支柱")之一. 继承用于创建可重用.扩展和修改在其他类中定义的行为的新类. 其成员被继承的类称为"基类",继承这些成员的类称为"派生类". 派生类只能有一个直接基类. 但是,继承是可传递的. 如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,则 ClassC 会继承 ClassB 和 ClassA 中声明的成员. 定义一个类从其他类派生时,派生类

C#中面向对象——封装,继承,多态

摘要:提到面向对象就不得不说面向对象的三大特性,封装:继承:多态!下面还是通过图和例子的方式继续了解一下面向对象的三个核心! 下面还是通过具体的图进行分析: 通过代码来感受一下语法: class Program { static void Main(string[] args) { Fu f1 = new Fu(); f1.GetFu(); //父类就只能获取到父类的属性方法,是不能获取到子类的方法的 zi z1 = new zi(); z1.GetZi(); //子类既可以获取到子类的方法属性

c# 中的封装、继承、多态详解

面向对象有封装.继承.多态这三个特性,面向对象编程按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成任务.这种编程方法提供了非常强大的多样性,大大增加了代码的重用机会,增加了程序开发的速度,将具备独立性特制的程序代码包装起来,修改部分程序代码时不至于会影响到程序的其他部分. 1.封装 每个对象都包含它进行操作所需要的所有信息,封装只公开代码单元的对外接口,而隐藏其具体实现,尽量不对外公开代码.使用封装有很多好处,从设计角度来讲,封装可以对外屏蔽一些

vb中的封装,继承,多态的实现。

        VB中引入了面向对象的编程机制,使该语言具有面向对象语言的封装.继承和多态三个主要的特征,极大地提高了应用程序的开发效率.但是大多数面向对象的设计语言都通过继承来提供多态的,而vb是通过多从ActiveX接口来提供多态的.         在上一篇文章中我简单的描述了vb中的类与对象,类,对象,对于继承与多态来说是比不可少的,下面我谈一下vb中封装,继承,多态的实现.         1. 封装         从表面意思上看就是将某些东西给打包封起来,vb中的封装与这个意思大致

第三课 Delphi中的封装,继承,多态的应该实例运用

   上一讲我们提到什么是封装,继承.和多态,现在我们讲解delphi中是如何实现它们的?以及为什么我们需要封装,继承和多态. 1.首先来说封装,delphi中用关键字private修饰符来说明,即表示类的成员为私有的,在类的外部是不可见了,只有在本类中可以随便使用.它的访问权限最低. 2.delphi中还有一个比较特殊的修饰符protected,表示该类的成员为保护型.受保护的成员只能由该类的和派生类可以访问.如果想要子类继承父类的某些功能的时候,可以使用某些成员为protected类型,访问