• 抽象类的用途


    1.抽象基类提供了统一的借口,用于处理各种不同的派生类。

    2.抽象类将实现的责任交给了派生类。

     1 float ComputeNetWorth(const TPersonalAsset *assets[], unsigned size)
     2 {
     3     //assets-该数组中包含指向TPersonalAsset类对象的指针
     4     //size-该数组中包含的元素个数
     5 
     6     float totalWorth = 0.0;
     7 
     8     /*资产数组的每个位置都指向一个某类型的TPersonalAsset类对象的指针。
     9       我们希望通过该对象调用ComputeNetWorth方法。
    10       动态绑定机制将为该对象选择正确的方法*/
    11 
    12     for (int i = 0; i < size; i++)
    13         /*在该位置通过资产对象调用虚方法
    14           assets[i]是一个指向TPersonalAsset类对象的指针。
    15           为totalWorth添加worth的返回值。为数组中所以的对象重复该步骤。*/
    16         if (assets[i] != 0)
    17             totalWorth += assets[i]->ComputeNetWorth();
    18     return totalWorth;
    19     
    20 }

    其中一个派生类的实现:

     1 class TAutomobileAsset :public TPersonalAsset
     2 {
     3 public:
     4     TAutomobileAsset(float originalPrice, const char licence[], const char date[], float loanAmount);
     5     
     6     virtual bool IsInsurable() const;
     7     virtual float ComputeNetWorth() const;
     8 
     9 private:
    10     float _purchasePrice;
    11     TString _licesePlate;
    12     float _amountOwed;
    13 };
    14 
    15 TAutomobileAsset::TAutomobileAsset(float originalPrice, const char licence[], const char date[], float loanAmount)
    16     :TPersonalAsset(date),_licencePlate(licence),_amountOwed(loanAmount),_purchasePrice(originalPrice)
    17 {
    18 
    19 }
    20 
    21 float TAutomobileAsset::ComputeNetWorth() const
    22 {
    23     /*此处为计算净值的代码*/
    24     return _purchasePrice;
    25 }
  • 相关阅读:
    十大排序算法总结
    Java Web之监听器
    JVM 内存模型
    设计模式--装饰者模式和建造者模式
    Java Web之过滤器
    jsp-servlet篇(三)
    jsp- servlet篇(二)
    jsp- servlet篇(一)
    xml和xml解析
    k8s环境部署(一)
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/6603921.html
Copyright © 2020-2023  润新知