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

来源:互联网 发布:mac qq怎么远程协助 编辑:程序博客网 时间:2024/06/01 09:28

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

 

 

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

 

this:

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

MyCar c2 = this.Car;

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

构造函数:this()

public classPerson

    {

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;

            }

 

 

原创粉丝点击