CS3L4——成员方法

成员方法

成员方法(函数)来表现对象的行为

  • 申明在类语句块中
  • 用来描述对象的行为
  • 规则与函数申明规则相同
  • 受到访问修饰符规则影响
  • 返回值参数不做限制
  • 方法数量不做限制

注意:

  • 成员方法不要加 static​ 关键字(讲到 静态方法 时会解释 static​ 到底有什么作用)
  • 成员方法 必须实例化出对象 再通过对象来使用 相当于该对象执行了某个行为
  • 成员方法 会受到成员修饰符的影响

成员方法的声明

C# 无所谓成员方法和成员变量的声明顺序,一般是变量声明在方法前边

成员方法上边可以添加三杠注释,外部使用成员方法时,使用鼠标指向方法可以显示注释内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Person
{
public string name;
public int age;

/// <summary>
/// 说话的行为
/// </summary>
/// <param name="str">说话的内容</param>
public void Speak(string str)
{
WriteLine("{0}说{1}",name, str);
}

/// <summary>
/// 判断是否成年
/// </summary>
/// <returns></returns>
public bool IsAdult()
{
return age >= 18;
}
}

成员方法的使用

类的外部调用成员方法,必须实例化出对象,再通过对象来使用,相当于该对象执行了某个行为
类的外部调用的成员方法必须是 public​ 的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class Person
{
public string name;
public int age;
public Person[] friends;

/// <summary>
/// 说话的行为
/// </summary>
/// <param name="str">说话的内容</param>
public void Speak(string str)
{
WriteLine("{0}说{1}",name, str);
}

/// <summary>
/// 判断是否成年
/// </summary>
/// <returns></returns>
public bool IsAdult()
{
return age >= 18;
}

/// <summary>
/// 添加朋友的方法
/// </summary>
/// <param name="p">传入的新朋友</param>
public void AppendFriend(Person p)
{
if (friends == null)
{
friends = new Person[] { p };
}
else
{
// 扩容
Person[] newfriends = new Person[friends.Length + 1];
for (int i = 0; i < friends.Length; i++)
{
newfriends[i] = friends[i];
}
newfriends[friends.Length - 1] = p;
friends = newfriends;
}
}
}

internal class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.name = "MrTang";
p.Speak("I Love C#");
p.age = 18;
if (p.IsAdult())
{
p.Speak("我成年了");
}
Person p2 = new Person();
p2.name = "小明";
p2.age = 16;

p.AppendFriend(p2);

for (int i = 0; i < p.friends.Length; i++)
{
WriteLine(p.friends[i].name);
}
}
}

输出:

1
2
3
MrTang说I Love C#
MrTang说我成年了
小明

这里就体现了封装的优势,即外部调用类对象的方法时不需要关心它的实现,只需要直接调用就行了