关于构造函数中的this代码示例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { class Person { public string Name { get; set; } //姓名 public char Sex { get; set; } //性别 public int Age { get; set; } //年龄 public string Tel { get; set; } //电话 public string Address { get; set; } //住址 //一般的构造函数,里面是一堆参数,方便实例化的时候给参数赋值(俗称初始化) public Person(string name, char sex, int age, string tel, string address) //构造函数 { Name = name; Sex = sex; Age = age; Tel = tel; Address = address; } //构造函数是可以有重载的 //带this的构造函数,借“主构造函数”(参数最多的)的参数来用,不需要的参数用任意相同类型的值来补,目的就是为了避免大括号里面每个参数再赋值一遍,造成代码冗余 public Person(string name, char sex, int age) : this(name, sex, age,"","") //this关键字作用:(1)代表当前类的对象。(2)在类当中显示的调用本类的构造函数,语法 :this() { } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { class Program { static void Main(string[] args) { Person p1 = new Person("张三",'男',22,"13888888888","花果山水帘洞"); Console.WriteLine("我叫:{0},性别:{1},年龄:{2},电话:{3},住址:{4}", p1.Name, p1.Sex, p1.Age, p1.Tel, p1.Address); Person p2= new Person("王燕", '女', 18); Console.WriteLine("我叫:{0},性别:{1},年龄:{2}", p2.Name, p2.Sex, p2.Age); Console.ReadKey(); } } }
运行结果:
关于构造函数中的base代码示例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { class Person { public string Name { get; set; } //姓名 public char Sex { get; set; } //性别 public int Age { get; set; } //年龄 //一般的构造函数,里面是一堆参数,方便实例化的时候给参数赋值(俗称初始化) public Person(string name, char sex, int age) //构造函数 { Name = name; Sex = sex; Age = age; } } class Student: Person //继承Person类 { public double Chinese { get; set; } public double Math { get; set; } public double English { get; set; } //如果Person类内有自己定义有参的构造方法,则Student类的构造方法必须要加:base继承这个构造方法!因为默认的Student:base(空)构造方法已经被干掉了! //因为Person类没有定义无参的构造函数,所以不加:base会提示Person不包含0个参数的构造函数 public Student(string name, char sex, int age) : base(name, sex, age)//base里的参数,前面Person类构造函数的参数里面写什么,这里就写什么。 { } //base里的参数,前面Person类构造函数的参数里面写什么,这里就写什么。前提是Person类有对应的这三个参数。因为这个Person类参数少,所以就写满三个就行,不然还要补空值。 public Student(string name, char sex, int age, double chinese, double math, double english) : base(name, sex, age) { Chinese = chinese; Math = math; English = english; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { class Program { static void Main(string[] args) { Student stu_1 = new Student("赵六", '男', 20); Console.WriteLine("我叫:{0},性别:{1},年龄:{2}", stu_1.Name, stu_1.Sex, stu_1.Age); Student stu_2 = new Student("胖虎", '男', 20,95,98.5,60); Console.WriteLine("我叫:{0},性别:{1},年龄:{2},语文成绩:{3},数学成绩:{4},英语成绩:{5}", stu_2.Name, stu_2.Sex, stu_2.Age, stu_2.Chinese, stu_2.Math, stu_2.English); Console.ReadKey(); } } }
运行结果:
构造函数的作用是:初始化对象。
构造函数this和base的作用是:
1、this相当于继承了自己类的最完整的那个构造函数,目的就是避免代码冗余。
2、base相当于继承了父类的构造函数,目的也是避免代码冗余。
文章评论