第4章 面向对象编程方法 王德俊 上海交通大学继续教育学院
第4章 面向对象编程方法 4.1一个简单的程序 4.2 类和对象 4.3 类的继承、重载与多态 4.4 运算符的重载 4.5 接口及其实现 4.6 方法的委托 4.7 常用的几个类 4.8 命名空间
类可以具有静态成员 静态成员与非静态成员的主要差别 声明静态成员需要使用static修饰符 4.2 类和对象 4.2.5 类的静态成员 例如静态字段、静态方法等 静态成员与非静态成员的主要差别 静态成员属于类,而非静态成员则总是与特定的实例(对象)相联 系 声明静态成员需要使用static修饰符
1 静态数据成员 2 静态方法 3 C#中的常用类型转换静态方法 4.2 类和对象 4.2.5 类的静态成员 1 静态数据成员 2 静态方法 3 C#中的常用类型转换静态方法
1 静态数据成员 非静态的字段(数据)总是属于某个特定的对象,其值总是 表示某个对象的值 有时可能需要类中有一个数据成员来表示全体对象的共同特 征,这时就需要使用静态数据成员
静态数据成员 例如,在Student类中用一个数据成员studentNumber来统计学生的人数,那么这个数据成员表示的就不是某个学生对象的特征,而是全体学生对象的特征 class Student // 类名为Student { // 声明静态数据成员存放学生人数 public static int studentNumber; public string id; public string name; public char sex; public int age; }
静态数据成员 静态数据成员不属于任何一个特定的对象,而是属于类,或 者说属于全体对象,是被全体对象共享的数据
2 静态方法 如果某个方法使用时并不需要与具体的对象相联系,这时可 以将该方法声明为静态方法 静态方法同样使用修饰符static声明 静态方法属于类,只能使用类调用,不能使用对象调用
[例StudentStatic] 创建一个控制台应用程序 在该程序中定义一个学生类 该类除包含非静态成员外,还包含一个静态数据成员用以统计学生人 数(对象个数),以及一个静态方法用以返回学生人数
class Student // 类名为Student { // 声明字段 public static int studentNumber; // 声明静态数据成员 public string id; public string name; public char sex; public int age; public Student(string id,string name,char sex,int age) // 声明构造函数 { studentNumber++; //每创建一个对象,静态数据成员增1 this.id=id; this.name=name; this.sex=sex; this.age=age; } public static int GetNumber() // 声明静态方法 { return studentNumber;
static void Main(string[] args) { // 声明对象s1 Student s1=new Student("2005001","张三",'女',21); Console.WriteLine("学号:"+s1.id+",姓名:"+s1.name+",性别:"+s1.sex+",年龄:"+s1.age); // 声明对象s2 Student s2=new Student("2005002","李四",'男',20); Console.WriteLine("学号:"+s2.id+",姓名:"+s2.name+",性别:"+s2.sex+",年龄:"+s2.age); // 声明对象s3 Student s3=new Student("2005003","王五",'男',19); Console.WriteLine("学号:"+s3.id+",姓名:"+s3.name+",性别:"+s3.sex+",年龄:"+s3.age); Console.WriteLine("学生人数为:{0}", Student.GetNumber()); // 调用静态方法 Console.ReadLine(); }
以上程序在构造函数被调用时,使静态数据成员 studentNumber自动增1,从而起到自动统计学生人数的作用 静态方法与非静态方法一样可以重载
3 C#中的常用类型转换静态方法 在C#的System命名空间中,有一个Convert(转换)类,该类 提供了由字符串类型转换为相应其他基本数据类型的一系列 静态方法 注意:字符串的字符序列必须符合相应数据类型的格式要求 类型转换方法最常用的调用格式之一是: Convert.静态方法名(字符串类型数据)
C#中的常用类型转换静态方法 (1) Convert.ToInt32方法 (2) Convert.ToSingle方法 (3) Convert.ToChar方法 (4) Convert.ToBoolean方法
(1) Convert.ToInt32方法 将字符串类型转换为int类型 int a=Convert.ToInt32(“123”); // 符合要求 int b=Convert.ToInt32(“123.6”);// 不符合要求,含有小数点,将引发转换异常 int c=Convert.ToInt32(“2147483648”);// 不符合要求,超出int型的数值范围 ToInt16方法: 将字符串转换为short(短整型)类型 int n=Convert.ToInt16(“123”); //字符串“123”转化为整数123 ToInt64方法: 将字符串转换为long(长整型)类型 ToUInt32方法: 将字符串转换为uint(无符号整型)类型
将字符串类型转换为float(单精度浮点型)类型 ToDouble方法: (2) Convert.ToSingle方法 将字符串类型转换为float(单精度浮点型)类型 ToDouble方法: 将字符串转换为double(双精度浮点型)类型 ToDecimal方法: 将字符串转换为decimal(十进制型)类型
(3) Convert.ToChar方法 将字符串转换为char(字符)类型 char cd=Convert.ToChar(“a”); 其他类型的数据也可以使用ToString方法被转换为字符串类型 string sa=Convert.ToString(1234); // 将整型常量转换为字符串
(4) Convert.ToBoolean方法 使用ToBoolean方法时,字符串必须是true或false
本讲小结 1 静态数据成员 2 静态方法 3 C#中的常用类型转换静态方法