C++多态的实现条件

#include <iostream>
class Person{
public:
	virtual void say(){
		std::cout<<"person"<<std::endl;
	}
};
class Student:public Person{
public:
	void say(){
		std::cout<<"student"<<std::endl;
	}
};
int main(){
	Person per;
	Student stud;
	per.say();
	stud.say();
	//传递对象
	per = stud;
	per.say();
	//指针
	Person *pPtr = &stud;
	pPtr->say();
	//引用
	Person &pRef = stud;
	pRef.say();
}

1. 基类中用virtual关键字表明方法
2. 采用父类的引用和指针调用多态方法,父类对象本身不能实现多态

时间: 2024-08-11 12:58:11

C++多态的实现条件的相关文章

程序基石:C++多态的前提条件

准备知识 C++中多态(polymorphism)有以下三个前提条件: 必须存在一个继承体系结构. 继承体系结构中的一些类必须具有同名的virtual成员函数(virtual关键字) 至少有一个基类类型的指针或基类类型的引用.这个指针或引用可用来对virtual成员函数进行调用. 程序清单:C++中多态(运时行期绑定) #include <iostream> using namespace std; class CTradesPerson{ // base class public : vir

多态产生的条件

1 // Son2 类 1 package com.demo13; 2 3 public class Son2 extends Father{ 4 @Override 5 public void love() { 6 System.out.println("Son2 love"); 7 8 } 9 } 1 //Son2 类 package com.demo13; 2 3 public class Son extends Father{ 4 public void say(){ 5 Sy

代码优化-多态代替IF条件判断

场景描述 在开发的场景中,常常会遇到打折的业务需求,每个用户对应的等级,他们的打折情况也是不一样的.例如普通会员打9折,青铜会员打8.5折,黄金会员打8折等等.在一般开发中最简单的就是判断用户的等级,然后对订单作对应的打折处理. 场景示例 写了一个简单的小示例,如下所示: //1 代表学生 2老师 3校长 int type = 1; if (1 == type) { System.out.println("学生笑嘻嘻的说话"); } else if (2 == type) { Syst

继承、封装、多态

学习完类与对象终于认识到什么是类,什么是对象了.接下来要看的就是java的三大特征:继承.封装.多态. 一.封装(数据的隐藏) 在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部是可见的,哪些特性用于表示内部状态.通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏. 1.1.封装的步骤    1).使用private 修饰需要封装的成员变量.        2.)提供一个公开的方法设置或者访问私有的属性             设置 通过s

接口--多态

1.写出定义接口的格式 interface A{     public abstract void work(); } 注: (1)接口的权限修饰符如果不标明,默认为default,仅可在本包中访问; (2)接口中的方法必须为抽象方法,且public abstract可以不写,默认为public abstract.实际开发中通常写为 public void work(); (3)接口的子类叫做实现类,命名方式一般为:接口名+Impl,如InterfaceImpl; (4)java8中有新特性,可

JavaSE复习日记 : 多态

/** * 里氏替换原则 : * 能使用父类的地方,一定可以使用子类 * 什么是多态 : * 父类的引用,指向子类的对象 * 多态的前提条件 : * 有继承关系的两个类 * 多态的目的 : * ☆☆☆ 代码的重用 * 多态发什么在什么时候 : * 赋值的时候 * * !!!!!!!!! 多态中的 ☆☆☆ 覆写 是特指的 成员方法!!!!!!!!! * 什么是覆写 : * 就是在子类有个和父类相同的方法 : 方法名 , 参数列表 , 返回值类型 (和修饰符列表没关系) * 1 方法名相同 : 不相

C++中的多态

一. C++中多态的定义:多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的字对象的特性以不同的方式运作.简单的说,就一句话:允许子类类型的指针赋值给父类类型的指针. 二. 动态绑定是多态的基础. 动态绑定的定义:在程序运行时刻,找到对象指针或引用所调用的正确的函数. 动态绑定的原理:为包含有virtual型的函数类建一个虚函数表(为指针数组),表内存储虚函数,当类调用构造函数时,会为每一个对象生成至少一个指向虚函数表的虚指针,当此类的对象

java中的多态

多态是什么 1:在面向对象的程序设计中,多态是继继承和封装之后的第三大特征. 2:base类和导出类中有相同方法时,先调导出类的方法. 3:多态的作用是消除base类和导出类的耦合: 多态产生的条件 1 存在继承关系 2子类重写base类方法 3base类的引用指向子类 class Aa{ public void f(){ System.out.println("A.f()"); } } class B extends Aa{ public void f(){//子类重写base类方法

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

一丶封装 1 权限修饰符      可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default.           被public修饰的类可以在任意地方被访问:default类只可以被同一个包内部的类访问.      权限由大到小:public protected default(不写) private           被private修饰的成员只能在本类中访问,外界不能访问 2 set()/get()方法  (1)this关键字    a.可以用来调用变量,