1
第 7章 方法
7.1 定义与调用方法
7.2 方法参数
7.3 静态方法
7.4 方法重载
7.5 虚方法
7.6 抽象方法和外部方法
2
7.1.1 定义方法
方法的定义包括方法说明和方法体两大部分组成,其一般格式为:
[特征 ] [方法修饰符 ] 返回类型 方法名( [形式参数表 ])
{
方法体
}
形式参数表是由一个或多个下面的参数定义组成,参数之间用逗号分开。例如:
[特征 ] [参数修饰符 ] 类型 参数名
3
7.1.2 调用方法
方法调用的一般形式为:
对象,方法名 (实参表 ); //通过实例调用方法
如果是在同一个类的内部调用方法,则不需要指定对象名,形式为:
方法名 (实参表 )
调用方法和调用数据成员的区别是:调用方法时,不论是否有调用参数,方法名后必须跟括号。
返回目录
4
7.2.1 值参数
值参数是不附加任何修饰符的参数。
定义含有值类型参数方法的格式为:
[修饰符 ] 返回的数据类型 方法名(参数列表)
传递的参数格式为:
[特征 ] 参数的数据类型 参数名
5
7.2.2 引用参数
引用参数是以 ref修饰符声明的参数。
带引用参数的方法头格式为:
[修饰符 ] 返回的数据类型 方法名(参数列表)
传递的参数格式为:
[特征 ] ref 参数的数据类型 参数名
6
7.2.3 输出参数
带输出参数的方法头格式为:
[修饰符 ] 返回的数据类型 方法名(参数列表)
传递的参数格式为:
[特征 ] out 参数的数据类型 参数名
7
7.2.4 数组参数
数组参数是以 params修饰符声明的参数。
数组参数中的数组必须是一维数组类型,包括像 int[],string[][]等。
带有关键字 params的数组型参数必须是方法的参数列表中最后一个参数,否则会出现编译错误。
返回目录
8
7.3.1 静态方法的定义与调用
静态方法的定义形式为:
[修饰符 ] static 返回的数据类型 方法名(参数列表)
{
方法体
}
可以从 Main方法内调用静态方法,其调用格式为:
类名,静态方法名(参数列表)
9
7.3.2 访问类成员
非静态方法可以访问类中的任何成员。
而静态方法只能访问类中的静态成员,不能访问实例成员。
返回目录
10
方法重载即在同一个类的内部可以定义同名的方法,但方法的参数表必须不同。
方法的参数表由参数的个数、类型、定义顺序和修饰符共同确定,但仅仅是修饰符 ref和
out有差别的方法不能定义重载。
对于重载方法,程序员应尽可能保证让它们执行相同的功能,
返回目录
11
7.5.1 多态性
1.编译时的多态性
编译时的多态性通过重载来实现。
运行速度快。
2.运行时的多态性
运行时的多态性通过虚成员实现。
高度灵活和抽象。
多态性允许用户定义一个方法多次遍历类层次,以便在运行期间,根据使用的对象来调用该方法的合适版本。
12
7.5.2 虚方法
虚方法的定义形式为:
virtual 修饰符 返回的数据类型 方法名(参数表)
{
方法体
}
虚方法的重载形式为:
override 修饰符 返回的数据类型 方法名(参数表)
{
方法体
}
返回目录
13
7.6.1 抽象方法
当一个实例方法的声明包括一个 abstract修饰符,这个方法就被称为是一个抽象方法。
一个抽象方法同时也是一个虚方法。
抽象方法只能在抽象类中声明,并且它的声明中不能包含 static,virtual,override修饰符。
14
7.6.2 外部方法
当一个方法声明中包含 extern修饰符时,这个方法就被称为一个外部方法。
外部方法在外部执行,它不提供自己的方法实现,它的主体仅由分号组成。
在外部方法的声明中不能包含有 abstract修饰符。
返回目录
第 7章 方法
7.1 定义与调用方法
7.2 方法参数
7.3 静态方法
7.4 方法重载
7.5 虚方法
7.6 抽象方法和外部方法
2
7.1.1 定义方法
方法的定义包括方法说明和方法体两大部分组成,其一般格式为:
[特征 ] [方法修饰符 ] 返回类型 方法名( [形式参数表 ])
{
方法体
}
形式参数表是由一个或多个下面的参数定义组成,参数之间用逗号分开。例如:
[特征 ] [参数修饰符 ] 类型 参数名
3
7.1.2 调用方法
方法调用的一般形式为:
对象,方法名 (实参表 ); //通过实例调用方法
如果是在同一个类的内部调用方法,则不需要指定对象名,形式为:
方法名 (实参表 )
调用方法和调用数据成员的区别是:调用方法时,不论是否有调用参数,方法名后必须跟括号。
返回目录
4
7.2.1 值参数
值参数是不附加任何修饰符的参数。
定义含有值类型参数方法的格式为:
[修饰符 ] 返回的数据类型 方法名(参数列表)
传递的参数格式为:
[特征 ] 参数的数据类型 参数名
5
7.2.2 引用参数
引用参数是以 ref修饰符声明的参数。
带引用参数的方法头格式为:
[修饰符 ] 返回的数据类型 方法名(参数列表)
传递的参数格式为:
[特征 ] ref 参数的数据类型 参数名
6
7.2.3 输出参数
带输出参数的方法头格式为:
[修饰符 ] 返回的数据类型 方法名(参数列表)
传递的参数格式为:
[特征 ] out 参数的数据类型 参数名
7
7.2.4 数组参数
数组参数是以 params修饰符声明的参数。
数组参数中的数组必须是一维数组类型,包括像 int[],string[][]等。
带有关键字 params的数组型参数必须是方法的参数列表中最后一个参数,否则会出现编译错误。
返回目录
8
7.3.1 静态方法的定义与调用
静态方法的定义形式为:
[修饰符 ] static 返回的数据类型 方法名(参数列表)
{
方法体
}
可以从 Main方法内调用静态方法,其调用格式为:
类名,静态方法名(参数列表)
9
7.3.2 访问类成员
非静态方法可以访问类中的任何成员。
而静态方法只能访问类中的静态成员,不能访问实例成员。
返回目录
10
方法重载即在同一个类的内部可以定义同名的方法,但方法的参数表必须不同。
方法的参数表由参数的个数、类型、定义顺序和修饰符共同确定,但仅仅是修饰符 ref和
out有差别的方法不能定义重载。
对于重载方法,程序员应尽可能保证让它们执行相同的功能,
返回目录
11
7.5.1 多态性
1.编译时的多态性
编译时的多态性通过重载来实现。
运行速度快。
2.运行时的多态性
运行时的多态性通过虚成员实现。
高度灵活和抽象。
多态性允许用户定义一个方法多次遍历类层次,以便在运行期间,根据使用的对象来调用该方法的合适版本。
12
7.5.2 虚方法
虚方法的定义形式为:
virtual 修饰符 返回的数据类型 方法名(参数表)
{
方法体
}
虚方法的重载形式为:
override 修饰符 返回的数据类型 方法名(参数表)
{
方法体
}
返回目录
13
7.6.1 抽象方法
当一个实例方法的声明包括一个 abstract修饰符,这个方法就被称为是一个抽象方法。
一个抽象方法同时也是一个虚方法。
抽象方法只能在抽象类中声明,并且它的声明中不能包含 static,virtual,override修饰符。
14
7.6.2 外部方法
当一个方法声明中包含 extern修饰符时,这个方法就被称为一个外部方法。
外部方法在外部执行,它不提供自己的方法实现,它的主体仅由分号组成。
在外部方法的声明中不能包含有 abstract修饰符。
返回目录