A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李恒权 中级黑马   /  2014-3-7 15:19  /  1529 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李恒权 于 2014-3-8 15:21 编辑

我查看msdn时看不太明白,有谁能通俗点的解释一下么?最好能举例子。在此先谢谢了。

4 个回复

倒序浏览
本帖最后由 许庭洲 于 2014-3-7 15:38 编辑

1. base关键字主要是为派生类调用基类成员提供一个简写的方法;
2. 举例子:
    class A
    {
          public void F()
          {
                 //F的具体执行代码
           }
           public int this[int nIndex]
           {
                  get
                   {
                     /////////////////
                   }
                   set
                   {
                     /////////////////
                    }
            }
       }
       class B
       {
               public void G()
               {
                       int x=base[0];
                       base.F();
                }
          }
3. 类B从A中继承,B的方法G中调用了A的方法F和索引指示器。方法F在进行编译时等价于:
    public void G()
    {
            int x=(A(this))[0];
            (A(this)).F();
     }
4. 使用base关键字对基类成员的访问格式为:
    base.identifier
    base[expression-list]
            
               
回复 使用道具 举报 1 0
你在子类中使用base的时候就当成使用父类就行了。
用bese可以像在主函数中用对象访问成员那样访问父类的public和protected成员

还有就是要在子类的构造方法传递参数给父类时也需要用base()
class A
{
   public A(int a, int b)   //父类没默认构造方法,必须要两个参数
   {
   }
}
class B : A
{
   public B(int a,int b,int c,int d):base(a, b)   //继承父类需要给父类传递两参数初始化父类
   {
   }
}
这样实例化B类的对象时,从父类继承下来的成员也就能完成初始化
回复 使用道具 举报 1 0
Q.z.l 发表于 2014-3-7 16:39
你在子类中使用base的时候就当成使用父类就行了。
用bese可以像在主函数中用对象访问成员那样访问父类的pub ...

嗯,通过你的解析,懂了,谢谢哈!
回复 使用道具 举报
同学,你是叫李恒全么,你的技术分已经25分了,但是没有看到你走黑马的报名流程,你是报名本期么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马