1、命名空间
可以认为类是属于命名空间的。
如果在当前项目中没有这个类的命名空间,需要我们手动的导入这个类所在的 命名空间。
1)、用鼠标去点
2)、alt+shift+F10
3)、记住命名空间,手动的去引用
2、在一个项目中引用另一个项目的类
1)、添加引用
2)、引用命名空间
3、值类型和引用类型
区别: 1、值类型和引用类型在内存上存储的地方不一样。
2、在传递值类型和传递引用类型的时候,传递的方式不一样。 值类型我们称之为值传递,引用类型我们称之为引用传递。
我们学的值类型和引用类型:
值类型:int、double、bool、char、decimal、struct、enum
引用类型:string、自定义类、数组
存储: 值类型的值是存储在内存的栈当中。 引用类型的值是存储在内存的堆中。
3、字符串
1)、字符串的不可变性 当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值。
当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
2)、我们可以讲字符串看做是char类型的一个只读数组。 ToCharArray();将字符串转换为char数组 new string(char[] chs):能够将char数组转换为字符串
4、字符串提供的各种方法
1)、Length:获得当前字符串中字符的个数
2)、ToUpper():将字符转换成大写形式
3)、ToLower():将字符串转换成小写形式
4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较两个字符串,可以忽略大小写
5)、Split():分割字符串,返回字符串类型的数组。
6)、Substring():解决字符串。在截取的时候包含要截取的那个位置。
7)、IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有返回-1、值类型和引用类型在内存上存储的地方不一样。
8)、LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
9)、StartsWith():判断以…开始
10)、EndsWith():判断以…结束
11)、Replace():将字符串中某个字符串替换成一个新的字符串
12)、Contains():判断某个字符串是否包含指定的字符串
13)、Trim():去掉字符串中前后的空格
14)、TrimEnd():去掉字符串中结尾的空格
15)、TrimStart():去掉字符串中前面的空格
16)、string.IsNullOrEmpty():判断一个字符串是否为空或者为null
17)、string.Join():将数组按照指定的字符串连接,返回一个字符串。
5、继承
我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员, 单独的封装到一个类中,作为这些类的父类。
Student、Teacher、Driver 子类 派生类
Person 父类 基类
子类继承了父类,那么子类从父类那里继承过来了什么?
首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
问题:子类有没有继承父类的构造函数?
答:子类并没有继承父类的构造函数,但是。子类会默认的调用父类无参数的构造函数, 创建父类对象,让子类可以使用父类中的成员。 所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了, 子类就调用不到了,所以子类会报错。
解决办法: 1)、在父类中重新写一个无参数的构造函数。 2)、在子类中显示的调用父类的构造函数,使用关键字:base()
6、继承的特性
1、继承的单根性:一个子类只能有一个父类。
2、继承的传递性
7、查看类图
8、object是所有类的基类。
9、new关键字
1)、创建对象
2)、隐藏从父类那里继承过来的同名成员。 隐藏的后果就是子类调用不到父类的成员。
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _01复习
8 {
9 public class Person
10 {
11 //字段、属性、方法、构造函数
12 //字段:存储数据
13 //属性:保护字段,对字段的取值和设值进行限定
14 //方法:描述对象的行为
15 //构造函数:初始化对象(给对象的每个属性依次的赋值)
16 //类中的成员,如果不加访问修饰符,默认都是private
17 string _name;
18 /// <summary>
19 /// 属性的本质就是两个方法
20 /// </summary>
21 public string Name
22 {
23 get { return _name; }
24 set {
25 if (value != "孙全")
26 {
27 value = "孙全";
28 }
29 _name = value; }
30 }
31
32 int _age;
33 public int Age
34 {
35 get {
36 if (_age < 0 || _age > 100)
37 {
38 return _age = 0;
39 }
40
41 return _age; }
42 set { _age = value; }
43 }
44
45 char _gender;
46 public char Gender
47 {
48 get { return _gender; }
49 set { _gender = value; }
50 }
51 //this:当前类的对象
52 //this:调用当前类的构造函数
53 public void SayHello()
54 {
55 string Name = "张三";
56 Console.WriteLine("{0},{1},{2}",this.Name,this.Age,this.Gender);
57 }
58
59 private static int _id;
60
61 //静态函数只能够访问静态成员
62 public static void SayHelloTwo()
63 {
64
65 Console.WriteLine("Hello 我是静态的");
66 }
67
68 //构造函数:1、没有返回值 连void也没有
69 //2、构造函数的名称跟类名一样
70
71 public Person(string name,int age,char gender)
72 {
73 this.Name = name;
74 this.Age = age;
75 if (gender != '男' && gender != '女')
76 {
77 gender = '男';
78 }
79 this.Gender = gender;
80 }
81
82 public Person(string name, char gender):this(name,0,gender)
83 {
84 //this.Name = name;
85 //this.Gender = gender;
86 }
87
88 public Person()
89 {
90
91 }
92
93 }
94 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _01复习
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 Person zsPerson = new Person("张三",-18,'中');
14 zsPerson.SayHello();
15 Person.SayHelloTwo();
16 Console.ReadKey();
17 //new:1、在内存中开辟一块空间 2、在开辟的创建对象 3、调用对象的构造函数
18 }
19 }
20 }
1 using System;
2 using System.Linq;
3 using System.Text;
4 using System.Collections.Generic;
5 using System.Threading.Tasks;
6 using System.IO;
7 using _01复习;
8 namespace _02_命名空间
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Person zsPerson = new Person();
15 zsPerson.Name = "张三";
16 Console.WriteLine(zsPerson.Name);
17 Console.ReadKey();
18
19 //A--->ProjectA---顾客类
20 //B--->ProjcetB---顾客类
21 //C-->ProjectC---顾客类
22 }
23 }
24 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _03值类型和引用类型
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13
14 }
15 }
16 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _04字符串
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 int a = 16;
14 int b = 17;
15 //字符串的不可变性
16 //string name = "张三";
17 //name = "孙全";
18 //Console.WriteLine(name);
19 //Console.ReadKey();
20
21 //string s1 = "张三";
22 //string s2 = "张三";
23 //Console.ReadKey();
24
25 //可以讲string类型 看做是char类型的一个只读数组
26 string s = "abcdefg";
27 s = "bbcdefg";
28 // s[0] = 'b';不能这样做 因为是只读的
29 //首先将字符串转换为char类型的数组
30 char[] chs = s.ToCharArray();
31 chs[0] = 'b';
32 //将字符数组转换为我们的字符串
33 s = new string(chs);
34 //既然可以将string看做char类型的只读数组,所以我可以通过下标去访问字符串中的某一个元素
35 Console.WriteLine(s[0]);
36 Console.WriteLine(s);
37 Console.ReadKey();
38 }
39 }
40 }
1 using System;
2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Linq;
5 using System.Text;
6 using System.Threading.Tasks;
7
8 namespace _05StringBuilder
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 StringBuilder sb = new StringBuilder();
15 string str = null;
16 //创建了一个计时器,用来记录程序运行的时间
17 //00:00:00.0422166
18 Stopwatch sw = new Stopwatch();
19 sw.Start();//开始计时
20 for (int i = 0; i < 100000; i++)
21 {
22 //str += i;
23 sb.Append(i);
24 }
25 sw.Stop();//结束计时
26 Console.WriteLine(sb.ToString());
27 Console.WriteLine(sw.Elapsed);
28 Console.ReadKey();
29
30
31
32
33 }
34 }
35 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _06字符串的各种方法
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 //练习一:随机输入你心中想到的一个名字,然后输出它的字符串长度 length:可以得字符串的长度
14 //console.writeline("请输入你心中想的那个人的名字");
15 //string name = console.readline();
16 //console.writeline("你心中想的人的名字的长度是{0}",name.length);
17 //console.readkey();
18
19
20 //Console.WriteLine("请输入你喜欢的课程");
21 //string lessonOne = Console.ReadLine();
22 将字符串转换成大写
23 lessonOne = lessonOne.ToUpper();
24 将字符串转换成小写形式
25 lessonOne = lessonOne.ToLower();
26 //Console.WriteLine("请输入你喜欢的课程");
27 //string lessonTwo = Console.ReadLine();
28 lessonTwo = lessonTwo.ToUpper();
29 lessonTwo = lessonTwo.ToLower();
30 //if (lessonOne.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase))
31 //{
32 // Console.WriteLine("你们俩喜欢的课程相同");
33 //}
34 //else
35 //{
36 // Console.WriteLine("你们俩喜欢的课程不同");
37 //}
38 //Console.ReadKey();
39
40
41 //string s = "a b dfd _ + = ,,, fdf ";
42 分割字符串Split
43 //char[] chs = { ' ', '_', '+', '=', ',' };
44 //string[] str = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);
45 //Console.ReadKey();
46
47
48 //练习:从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。
49 //让用户输入一个日期格式如:2008-01-02,你输出你输入的日期为2008年1月2日
50
51 //string s = "2008-08-08";
52 char[] chs = { '-' };
53 //string[] date = s.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
54 //Console.WriteLine("{0}年{1}月{2}日", date[0], date[1], date[2]);
55 //Console.ReadKey();
56 //老赵
57
58 //string str = "国家关键人物老赵";
59 //if (str.Contains("老赵"))
60 //{
61 // str = str.Replace("老赵", "**");
62 //}
63 //Console.WriteLine(str);
64 //Console.ReadKey();
65
66
67 //Substring 截取字符串
68
69 //string str = "今天天气好晴朗,处处好风光";
70 //str = str.Substring(1,2);
71 //Console.WriteLine(str);
72 //Console.ReadKey();
73
74 //string str = "今天天气好晴朗,处处好风光";
75 //if (str.EndsWith("风"))
76 //{
77 // Console.WriteLine("是的");
78 //}
79 //else
80 //{
81 // Console.WriteLine("不是的");
82 //}
83 //Console.ReadKey();
84
85
86 //string str = "今天天天气好晴朗,天天处天好风光";
87 //int index = str.IndexOf('哈',2);
88 //Console.WriteLine(index);
89 //Console.ReadKey();
90
91
92 //string str = "今天天气好晴朗,处处好风光";
93 //int index = str.LastIndexOf('天');
94 //Console.WriteLine(index);
95 //Console.ReadKey();
96
97
98 LastIndexOf Substring
99 //string path = @"c:\a\b\c苍\d\e苍\f\g\\fd\fd\fdf\d\vfd\苍老师苍.wav";
100 //int index = path.LastIndexOf("\\");
101 //path = path.Substring(index + 1);
102 //Console.WriteLine(path);
103 //Console.ReadKey();
104
105
106
107 //string str = " hahahah ";
108 //str = str.Trim();
109 // //str = str.TrimStart();
110 // str = str.TrimEnd();
111 // Console.Write(str);
112 // Console.ReadKey();
113
114 //string str = "";
115 //if (string.IsNullOrEmpty(str))
116 //{
117 // Console.WriteLine("是的");
118 //}
119 //else
120 //{
121 // Console.WriteLine("不是");
122 //}
123 string[] names = { "张三", "李四", "王五", "赵六", "田七" };
124 张三|李四|王五|赵六|田七
125 string strNew = string.Join("|", names);
126 Console.WriteLine(strNew);
127 Console.ReadKey();
128
129
130
131
132 }
133 }
134 }
1 using System;
2 using System.Collections.Generic;
3 //using System.IO;
4 using System.Linq;
5 using System.Text;
6 using System.Threading.Tasks;
7 using System.IO;
8
9 namespace _07字符串的练习
10 {
11 class Program
12 {
13 static void Main(string[] args)
14 {
15 //课上练习1:接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"
16
17 //string str = "abcdefg";//ggedcba
18 //char[] chs = str.ToCharArray();
19 //Array.Reverse(chs);
20 //string a = chs[0].ToString();//字符数组转化为string不能用tostring方法
21 //for (int i = 0; i < chs.Length / 2; i++)
22 //{
23 // char temp = chs[i];
24 // chs[i] = chs[chs.Length - 1 - i];
25 // chs[chs.Length - 1 - i] = temp;
26 //}
27
28 //str = new string(chs);
29 //for (int i = 0; i < chs.Length; i++)
30 //{
31 // Console.WriteLine(chs[i]);
32 //}
33 //Console.WriteLine(str);
34 //Console.ReadKey();
35
36
37 //倒叙循环
38 //for (int i = str.Length - 1; i >= 0; i--)
39 //{
40 // Console.Write(str[i]);
41 //}
42
43 //"hello c sharp"→"sharp c hello"
44 //string str = "hello c sharp";
45 //string[] strNew = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
46 //for (int i = 0; i < strNew.Length / 2; i++)
47 //{
48 // string temp = strNew[i];
49 // strNew[i] = strNew[strNew.Length - 1 - i];
50 // strNew[strNew.Length - 1 - i] = temp;
51 //}
52
53 //str = string.Join(" ", strNew);
54 //Console.WriteLine(str);
55 string.join:将字符串按照指定的分隔符连接
56 Console.WriteLine(strNew);//sharp c hello
57 sharp c hello
58
59 //for (int i = 0; i < strNew.Length; i++)
60 //{
61 // Console.WriteLine(strNew[i]);
62 //}
63 //Console.ReadKey();
64
65 //string str = "hello c sharp";
66 //string[] strNew = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
67 //Array.Reverse(strNew);
68 //str = string.Join(" ", strNew);
69 //Console.WriteLine(str);
70 //Console.ReadKey();
71
72 //课上练习3:从Email中提取出用户名和域名:abc@163.com。
73 //string email = "285014478@qq.com";
74 //int index = email.IndexOf('@');
75 //string userName = email.Substring(0, index);
76 //string yuMing = email.Substring(index+1);
77 //Console.WriteLine(yuMing);
78 //Console.WriteLine(userName);
79
80
81 //Console.ReadKey();
82
83
84
85
86
87
88
89
90
91
92 //课上练习4:文本文件中存储了多个文章标题、作者,
93 //标题和作者之间用若干空格(数量不定)隔开,每行一个,
94 //标题有的长有的短,输出到控制台的时候最多标题长度10,
95 //如果超过10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。
96
97
98 //string path = @"C:\Users\SpringRain\Desktop\1.txt";
99 //string[] contents = File.ReadAllLines(path, Encoding.Default);
100 //for (int i = 0; i < contents.Length; i++)
101 //{
102 // string[] strNew = contents[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
103 // Console.WriteLine((strNew[0].Length>10?strNew[0].Substring(0,8)+"......":strNew[0])+"|"+strNew[1]);
104 //}
105 //Console.ReadKey();
106
107
108 //历史就是这么回事儿|袁腾飞
109 //c#基础之循环结构while、do-while|老赵
110 //AV|苍老师
111 //坏蛋是怎样炼成的怎样炼成的|六道
112
113
114 //让用户输入一句话,找出所有e的位置
115 //string str = "咳嗽、咳嗽 哈哈咳嗽 咳 咳 咳嗽";
116 //for (int i = 0; i < str.Length; i++)
117 //{
118 // if (str[i] == 'e')
119 // {
120 // Console.WriteLine(i);
121 // }
122 //}
123 //Console.ReadKey();
124
125 //string str = "afeeefefofoeefe";
126 //int index = str.IndexOf("ef");
127 //Console.WriteLine("第1次出现e的位置是{0}", index);
128 循环体:从上一次出现e的位置加1的位置找下一次e出现的位置
129 循环条件:index!=-1
130 //int count = 1;//用来记录e出现的次数
131 //while (index != -1)
132 //{
133 // count++;
134 // index = str.IndexOf("ef", index + 1);
135 // if (index == -1)
136 // {
137 // break;
138 // }
139 // Console.WriteLine("第{0}次出现ef的位置是{1}", count, index);
140 //}
141 //Console.ReadKey();
142
143
144
145 //用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:老牛很邪恶,输出后变成老牛很**;
146 //string str = "老牛很邪恶";
147 //if (str.Contains("邪恶"))
148 //{
149 // str = str.Replace("邪恶", "**");
150 //}
151 //Console.WriteLine(str);
152 //Console.ReadKey();
153
154 //把{“诸葛亮”,”鸟叔”,”卡卡西”,”卡哇伊”}变成诸葛亮|鸟叔|卡卡西|卡哇伊,然后再把|切割掉
155 string[] names = { "诸葛亮", "鸟叔", "卡卡西", "卡哇伊" };
156 string str = string.Join("|", names);
157 string[] strNew = str.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
158 Console.WriteLine(strNew.ToString());
159 Console.ReadKey();
160 }
161 }
162 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _08继承
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 //Student s = new Student();
14
15 //Driver d = new Driver();
16 Student s = new Student("学生", 18, '男', 101);
17 }
18 }
19
20 public class Person
21 {
22 private string _name;
23
24 public string Name
25 {
26 get { return _name; }
27 set { _name = value; }
28 }
29
30 private int _age;
31
32 public int Age
33 {
34 get { return _age; }
35 set { _age = value; }
36 }
37
38 private char _gender;
39
40 public char Gender
41 {
42 get { return _gender; }
43 set { _gender = value; }
44 }
45
46 public void CHLSS()
47 {
48 Console.WriteLine("吃喝拉撒睡");
49 }
50
51
52
53 public Person(string name, int age, char gender)
54 {
55 this.Name = name;
56 this.Age = age;
57 this.Gender = gender;
58 }
59
60 //public Person()
61 //{
62
63 //}
64
65
66 }
67 public class Student : Person
68 {
69
70 public Student(string name, int age, char gender, int id)
71 : base(name, age, gender)
72 {
73 //this.Name = name;
74 //this.Age = age;
75 //this.Gender = gender;
76 this.Id = id;
77 }
78
79
80 private int _id;
81
82 public int Id
83 {
84 get { return _id; }
85 set { _id = value; }
86 }
87
88
89
90 public void Study()
91 {
92 Console.WriteLine("学生会学习");
93 }
94 }
95 public class Teacher :Person
96 {
97
98 public Teacher(string name, int age, char gender, double salary)
99 : base(name, age, gender)
100 {
101 this.Salary = salary;
102 }
103
104 private double _salary;
105 public double Salary
106 {
107 get { return _salary; }
108 set { _salary = value; }
109 }
110 public void Teach()
111 {
112 Console.WriteLine("老师会讲课");
113 }
114 }
115 public class Driver:Person
116 {
117
118 public Driver(string name, int age, char gender, int driveTime)
119 : base(name, age, gender)
120 {
121 this.DirveTime = driveTime;
122 }
123
124
125 private int _dirveTime;
126 public int DirveTime
127 {
128 get { return _dirveTime; }
129 set { _dirveTime = value; }
130 }
131 public void Drive()
132 {
133 Console.WriteLine("司机会开车");
134 }
135 }
136
137
138
139 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _09继承练习
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 //记者:我是记者 我的爱好是偷拍 我的年龄是34 我是一个男狗仔
14 //司机:我叫舒马赫 我的年龄是43 我是男人 我的驾龄是 23年
15 //程序员:我叫孙全 我的年龄是23 我是男生 我的工作年限是 3年
16
17 Reporter rep = new Reporter("狗仔", 34, '男', "偷拍");
18
19 rep.ReporterSayHello();
20
21
22 Programmer pro = new Programmer("程序猿", 23, '男', 3);
23 pro.ProgrammerSayHello();
24
25 Console.ReadKey();
26
27
28
29 }
30 }
31
32 public class Person
33 {
34 private string _name;
35 public string Name
36 {
37 get { return _name; }
38 set { _name = value; }
39 }
40 private int _age;
41 public int Age
42 {
43 get { return _age; }
44 set { _age = value; }
45 }
46 private char _gender;
47 public char Gender
48 {
49 get { return _gender; }
50 set { _gender = value; }
51 }
52
53
54 public Person(string name, int age, char gender)
55 {
56 this.Name = name;
57 this.Age = age;
58 this.Gender = gender;
59 }
60 }
61
62
63 public class Reporter : Person
64 {
65 public Reporter(string name, int age, char gender, string hobby)
66 : base(name, age, gender)
67 {
68 this.Hobby = hobby;
69 }
70
71
72 private string _hobby;
73
74 public string Hobby
75 {
76 get { return _hobby; }
77 set { _hobby = value; }
78 }
79
80 public void ReporterSayHello()
81 {
82 Console.WriteLine("我叫{0},我是一名狗仔,我的爱好是{1},我是{2}生,我今年{3}岁了",this.Name,this.Hobby,this.Gender,this.Age);
83 }
84 }
85
86
87 public class Programmer : Person
88 {
89 private int _workYear;
90
91 public int WorkYear
92 {
93 get { return _workYear; }
94 set { _workYear = value; }
95 }
96
97 public void ProgrammerSayHello()
98 {
99 Console.WriteLine("我叫{0},我是一名程序猿,我是{1}生,我今年{2}岁了,我的工作年限是{3}年",this.Name,this.Gender,this.Age,this.WorkYear);
100 }
101
102
103 public Programmer(string name, int age, char gender, int workYear)
104 : base(name, age, gender)
105 {
106 this.WorkYear = workYear;
107 }
108 }
109
110 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace _10关键字_new
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 Reporter rep = new Reporter("记者", 11, '男', "偷拍");
14 rep.SayHello();
15 rep.Test();
16 Console.ReadKey();
17 }
18 }
19
20 public class Person
21 {
22 private string _name;
23 public string Name
24 {
25 get { return _name; }
26 set { _name = value; }
27 }
28 private int _age;
29 public int Age
30 {
31 get { return _age; }
32 set { _age = value; }
33 }
34 private char _gender;
35 public char Gender
36 {
37 get { return _gender; }
38 set { _gender = value; }
39 }
40
41
42 public Person(string name, int age, char gender)
43 {
44 this.Name = name;
45 this.Age = age;
46 this.Gender = gender;
47 }
48
49 public void Test()
50 {
51 Console.WriteLine("测试");
52 }
53
54 public void SayHello()
55 {
56 Console.WriteLine("大家好,我是人类");
57 }
58 }
59
60
61 public class Reporter : Person
62 {
63 public Reporter(string name, int age, char gender, string hobby)
64 : base(name, age, gender)
65 {
66 this.Hobby = hobby;
67 }
68
69
70 private string _hobby;
71
72 public string Hobby
73 {
74 get { return _hobby; }
75 set { _hobby = value; }
76 }
77
78 public void ReporterSayHello()
79 {
80 Console.WriteLine("我叫{0},我是一名狗仔,我的爱好是{1},我是{2}生,我今年{3}岁了", this.Name, this.Hobby, this.Gender, this.Age);
81 }
82
83
84 public new void SayHello()
85 {
86 Console.WriteLine("大家好,我是记者");
87 }
88 }
89
90
91 public class Programmer : Person
92 {
93 private int _workYear;
94
95 public int WorkYear
96 {
97 get { return _workYear; }
98 set { _workYear = value; }
99 }
100
101 public void ProgrammerSayHello()
102 {
103 Console.WriteLine("我叫{0},我是一名程序猿,我是{1}生,我今年{2}岁了,我的工作年限是{3}年", this.Name, this.Gender, this.Age, this.WorkYear);
104 }
105
106
107 public Programmer(string name, int age, char gender, int workYear)
108 : base(name, age, gender)
109 {
110 this.WorkYear = workYear;
111 }
112
113
114 public new void SayHello()
115 {
116 Console.WriteLine("大家好,我是程序员");
117 }
118 }
119 }