zoukankan      html  css  js  c++  java
  • 第3课:现代面象对象的程序设计

    封装对象的原理:

    一、什么是封装?封装的好处?

       把类的内部隐藏引来
       良好的封装能够减少耦合;
       类内部的实现可以自由地修改;
       类具有清晰的对外接口 

    二、实现:

    1.访问限制符来实现
    public;protected(类内部及其子类);internal(同一个assembly);private(类内部)
    默认:private 
    protected internal  = protected + internal(同一项目,子类可以访问基类)

    2.
    属性和索引器也用来封装类的细节,并提供公用接口给该类的用户

    继承性
    1.派生类:基类
    2.C#只支持单继承,多继承是指一个子类有多个父类,若要实现多继承要使用接口

    3.防止继承:public sealed class XX
    4.派生类可以调用基类的方法:base
    基类
    1 publicclass Account
    2 {
    3 publicdouble balance;
    4 publicbool Withdraw(double amt)
    5 {
    6 balance -= amt;
    7 returntrue;
    8 }
    9 }
    派生类
    1 publicclass CheckAccount:Account
    2 {
    3 publicbool Withdraw(double amt)
    4 {
    5 if(amt<=base.balance)
    6 returnbase.Withdraw(amt);
    7 else
    8 returnfalse;
    9 }
    10 }

    何时使用继承性
    1.代码重用
    2.设计重用(公有的字段和方法放在父类,私有的放在子类)
    3.经验而言(A是由B继承来的,则可以说A IS a B)

    多态性  

    同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性


    编译时多态(overload 重载),运行时多态(override 覆写)

    overload 

    位置:存在于有继承关系的类中
    方法名:必须相同
    参数列表:必须不相同
    返回值:可以不相同

    override

    位置:存在于同一类中
    方法名:必须相同
    参数列表:必须相同
    返回值:必须相同

    virtual

    若在子类中要覆写父类中的方法,则父类的方法必须为虚拟方法

    abstract

    父类中只有抽象方法的声明,实现在子类中
    若类中存在一个抽象方法,则类必须声明为抽象类(抽象类不常用,用接口)

    接口
    1.接口为类提供蓝图(接口的目的就是搭建一个框架,等待实现)
    2.接口只提供定义(永远是public,只有方法的定义没有实现【这方面和抽象方法一样】)
    3.实现接口的数据类型必须提供接口成员的实现
    4.接口本身可以从多个基接口派生
    接口和抽象类的比较:
    相同点:
    1.都是只有方法的定义,没有实现
    2.就像子类继承了父类,则必须提供父类抽象方法的实现一样;若一个类继承了接口,则必须提供方法体来实现
    如:public class admin_user:Iadmin_user 表示类admin_user提供Iadmin_user中方法的实现

    不同点:
    1.接口里方法永远是public的
    2.接口中只有方法的定义,而抽象类中可以有一般的方法的定义和其它类成员的定义:如属性、字段 
    3.类只支持单继承,而接口可以实现多继承 

    接口
    publicinterface IAccount
    {
    void Method1();
    string Method2(int x, int y);
    ...
    }
    实现类
    Public class InsuranceAccount : IAccount
    {
    void Method1()
    {

    }
    string Method2(int x, int y)
    {

    }
    }

     

  • 相关阅读:
    谷歌地图地理解析和反解析geocode.geocoder详解(转)
    Html5 Geolocation获取地理位置信息(转)
    利用单片机快速实现家庭智能控制平台
    邪恶改装:TPYBoard制作廉价WIFI干扰器
    [TPYBoard
    [TPYBoard
    [TPYBoard
    python中的subprocess.Popen()使用
    KVM虚拟机的xml配置文件
    Linux LVM 总结
  • 原文地址:https://www.cnblogs.com/jshchg/p/2096097.html
Copyright © 2011-2022 走看看