黑马程序员技术交流社区

标题: 如何使用base? [打印本页]

作者: 李恒权    时间: 2014-3-7 15:19
标题: 如何使用base?
本帖最后由 李恒权 于 2014-3-8 15:21 编辑

我查看msdn时看不太明白,有谁能通俗点的解释一下么?最好能举例子。在此先谢谢了。
作者: 许庭洲    时间: 2014-3-7 15:25
本帖最后由 许庭洲 于 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]
            
               

作者: Q.z.l    时间: 2014-3-7 16:39
你在子类中使用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类的对象时,从父类继承下来的成员也就能完成初始化
作者: 李恒权    时间: 2014-3-8 15:20
Q.z.l 发表于 2014-3-7 16:39
你在子类中使用base的时候就当成使用父类就行了。
用bese可以像在主函数中用对象访问成员那样访问父类的pub ...

嗯,通过你的解析,懂了,谢谢哈!
作者: SunshineGirl    时间: 2014-3-8 15:51
同学,你是叫李恒全么,你的技术分已经25分了,但是没有看到你走黑马的报名流程,你是报名本期么?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2