黑马程序员_this与base的简单总结

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

 

 

刚开始用thisbase有点迷,所以把老师讲的视频又看了一遍后重新整理了一遍。

 

this:

1.       作为当前类的对象,调用类中的成员。this.成员

MyCar c2 = this.Car;

2.       调用本类中的其他构造函数

构造函数:this()

public class Person

    {

public Person(string name, int age, string email, double salary)    //含有多个参数的构造函数

        {

            this.Name = name;

            this.Age = age;

            this.Email = email;

            this.Salary = salary;

        }

 

                   //定义另一个构造函数继承本类中参数最全的构造函数。

          public Person(string name)    //将有参的值传过来,没参的写默认值

            :this(name,0,null,0)        //通过this关键字调用当前类的其它构造函数

        {

            //this.Name = name;        //由于调用的构造函数中已经进行了赋值,所以无需再赋值

        }

 

        public Person(string name, int age)

            :this(name,age,null,0)

        {

            //this.Name = name;

            //this.Age = age;

        }

}

 

base:

1.       调用父类中的成员,base无法取得子类独有的成员。

//在一般情况下,如果子类继承了父类的成员,那么在子类中,通过this.成员或base.成员访问的都是一样的,除非父类中的成员子类继承后又重写了

            MyCar c1 = base.Car;

            MyCar c2 = this.Car;

 

2.在子类中调用父类的有参的构造函数。子类构造函数:base(参数)

类在继承的时候,构造函数不能被继承,子类的构造函数会默认去调用父类中的无参数的构造函数。此时如果子类和父类中都定义了有参数的构造函数,子类在调用父类时,将找不到父类中无参数的构造函数,程序将会报错。

修正此错误除了在父类中增加一个无参构造函数外,还可以使用另一个方法:在子类的构造函数后面加一个base(),使子类不再默认调用父类无参的构造函数,而是调用父类中有参数的构造函数。

不修改父类,而是在子类的构造函数后面通过:base(),显示的去调用父类的某个有参构造函数。

 

//父类中的构造函数

public Person(string name, int age)

        {

            this.Name = name;

            this.Age = age;

            Console.WriteLine("Person类中的有参数的构造函数");

        }

//子类中的构造函数

public Student(string name, int age, double score)

                :base(name,age)                 //通过base调用父类中带两个参数的构造函数

            {

                //this.Name = name;             //由于继承了父类的有参构造函数,在父类中已经初始化,所以子类中不用再初始化

//this.Age = age;

                this.Score = score;

            }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值