zoukankan      html  css  js  c++  java
  • 第49课.多态的概念和意义

    1.面向对象中期望的行为

    a.根据实际的对象类型判断如何调用重写函数
    b.父类指针(引用)指向
     1).父类对象则调用父类对象中定义的函数
     2).子类对象则调用子类对象中定义的函数

    2.面向对象中的多态的概念

    a.根据实际的对象类型决定函数调用的具体目标
    b.同样的调用语句在实际运行时有多种不同的表现形态

    3.虚函数

    a.通过使用virtual关键字对多态进行支持
    b.被virtual声明的函数被重写后具有多态特性
    c.被virtual声明的函数叫做虚函数

    eg:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Parent 
    {
    public:
        virtual void print()
        {
            cout << "I'm Parent." << endl;
        }
    };
    
    class Child : public Parent 
    {
    public:
        virtual void print()
        {
            cout << "I'm Child." << endl;
        }
    };
    
    void how_to_print (Parent* p)
    {
        p->print();
    }
    
    int main()
    {
        Parent p;
        Child  c;
        
        how_to_print(&p);      
        how_to_print(&c);         // 如果不使用 virtual 那没相当与 Parent* p = &c; c会退化为父类,只能
                                  // 使用父类中的函数。输出I'm Parent.
    
        return 0;
    }
    

    4.多态的意义
    a.在程序运行过程中展现出动态的特性
    b.函数重写必须多态实现,否则没有意义
    c.多态是面向对象组件化程序设计的基础

    静态联编

    在程序的编译期间就能确定具体的函数调用:如函数重载

    动态联编

    在程序实际运行后才能确定具体的函数调用:如函数重写(与virtual合用)

    注:重载和重写。重载只是函数名相同,重写是完全相同(内容不同)。

  • 相关阅读:
    堆内存与栈内存
    struts2 ajax 实现方式
    Hibernate 配置派生属性
    高效 jquery 的奥秘
    对于Maven管理的项目制定虚拟目录
    ThreadLocal 笔记
    java Thread.join()
    vi 使用笔记
    浮动闭合方案:clearfix
    熬夜之弊及改善之法
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/11969509.html
Copyright © 2011-2022 走看看