zoukankan      html  css  js  c++  java
  • 抽象类的用途

    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 }
  • 相关阅读:
    Activity之间的数据传递
    解析JSON
    使用HTTP协议访问网路
    WebView的初体验
    Alarm机制用于定时服务
    IntentService和Service执行子线程对比
    前台服务
    Android四大组件之服务
    异步消息处理机制,UI更新
    Git学习
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/6603921.html
Copyright © 2011-2022 走看看