2010-第3~4讲---第四章 类和对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
成员概述
• 成员访问限制
– private 私有 – public 公有 – protected 保护 namespace Asm2 { – internal 内部
namespace Asm1 { internal class Student { } }
class Library { public void Get() { Asm1.Student s1 = new Asm1.Student();
5
成员概述
• 成员访问限制
– private 私有 – public 公有 – protected 保护
class Student { protected string name; protected void Write() { Console.WriteLine(name); } }
class Graduate : Student { public void Output() { Console.WriteLine(name); Write(); } }
21
4.2 方法
• 参数类型
– 值传递 – 引用传递
a: 20
b: 10 int a = 10; int b = 20; Swap(ref a, ref b); public void Swap(ref int x, ref int y) { int z = x; x = y; y = z; }
x y
4.2 方法
• 方法的重载
有时我们希望使用同一方法名来表示多个 操作,比如交换两个整数、实数、字符串的 方法都叫Swap。 C#中允许一个类中包含多个同名的方法, 只要它们的参数个数或类型不完全相同。
27
4.2 方法
•Class 方法的重载 Program
{ public static void Swap(ref int x, ref int y) { int z = x; x = y; y = z; } public static void Swap(ref double x, ref double y) { double z = x; x = y; y = z; } }
23
4.2 方法
• 参数类型
– 值传递 – 引用传递 – 输出型参数 – 数组型参数
public int Sum(int[] x) { int s = 0; for(int i=0;ii<x.Length; i++) foreach(int in x ) s += x[i]; s += i; return s; }
20
4.2 方法
• 参数类型
– 值传递 – 引用传递
a: 10
b: 20 int a = 10; int b = 20; Swap(ref a, ref b); public void Swap(ref int x, ref int y) { int z = x; x = y; y = z; }
x y
15
成员概述
• 字段
– 一般字段 – 常量字段 – 只读字段
public class Circle { public double r; public readonly double PI = 3.14; } Circle c1 = new Circle(); Console.WriteLine(c1.r); c1.r = 10; Console.WriteLine(c1.PI); c1.PI = 3.1416;
成员种类
– 数据成员 – 函数成员 – 嵌套成员 – 静态成员 – 非静态成员
成员概述
• 字段
Leabharlann Baidu– 一般字段
public class Circle { public double r; } Circle c1 = new Circle(); c1.r = 10; Console.WriteLine(c1.r);
第4章 类和对象
1
4.1 成员概述
• 成员概述
声明
class ComplexNumber { public double a=0; public double b=0; }
ComplexNumber c1 = new ComplexNumber();
创建对象
2
成员概述
• 成员种类
– 数据成员 – 函数成员 – 嵌套成员
int[] x = {1, 3, 5, 7, 9}; int s1 = Sum( x ); int s2 = Sum( 2, 4, 6, 8, 10 );
25
• 数组型参数的使用规定:
方法中只允许定义一个数组型参数,且该参数必
须位于参数列表中的最后;
数组型参数所定义的数组必须是一维数组; 数组型参数不能同时作为引用型参数或输出型参 数。
name; string school;
10
成员概述
• 静态成员与非静态成员
– 实例成员(非静态) – 静态成员 class Student
{ public string name; public static string school; public static void Write() { Console.WriteLine(name); } }
常量字段默认是静态的,而只读字段是针对单个对象的。 只读字段只能在对象创建时被赋值,而后不允许修改。
16
成员概述
• 字段
– 一般字段 – 常量字段 – 只读字段
public class BankCard { public readonly int id; private static int count = 0; public BankCard( ) { id = count++ ; } }
17
4.2 方法
• 方法声明
返回类型
方法名 参数列表
public int Max(int x, int y) { return x >= y ? x : y; } 执行体
18
4.2 方法
• 参数类型
– 值传递
public void Swap(int x, int y) { int z = x; x = y; y = z; } int a = 10; int b = 20; Swap(a, b);
9
成员概述
• 静态成员与非静态成员
class Student – 实例成员(非静态 ) { public string – 静态成员 public static } Student s1 = new Student(); Console.WriteLine(s1.name); Console.WriteLine(Student.school);
只要它们的参数个数或类型不完全相同。
– 仅仅返回类型不同
– 只有ref和out型参数的区别
30
4.3 类的特殊方法
• 构造函数
– 对象的初始化工作放在构造函数中
– 当对象被创建时,构造函数被自动执行。
• 析构函数
– 清除工作放在析构函数中
– 当对象消亡时,析构函数被自动执行。
31
4.3 类的特殊方法
} } }
8
namespace Asm1 { public class Student { } }
成员概述
• 静态成员与非静态成员
– 实例成员(非静态)
class Student { public string name; }
Student s1 = new Student(); Console.WriteLine(s1.name);
}
7
} }
成员概述
• 成员访问限制
– private 私有 – public 公有 – protected 保护 namespace Asm2 { – internal 内部 class Library
{ public void Get() { Asm1.Student s1 = new Asm1.Student();
• 构造函数
int[] x = {1, 3, 5, 7, 9}; int s1 = Sum(x);
24
4.2 方法
• 参数类型
– 值传递 – 引用传递 – 输出型参数 – 数组型参数
public int Sum(params int[] x) { int s = 0; for(int i=0; i<x.Length; i++) s += x[i]; return s; }
a: 10
b: 20
x: 10 y: 20
19
4.2 方法
• 参数类型
– 值传递
public void Swap(int x, int y) { int z = x; x = y; y = z; } int a = 10; int b = 20; Swap(a, b);
a: 10
b: 20
x: 20 y: 10
14
成员概述
• 字段
– 一般字段 – 常量字段
public class Circle { public double r; public const double PI = 3.14; } Circle c1 = new Circle(); c1.r = 10; Console.WriteLine(c1.r); Console.WriteLine(Circle.PI); Circle.PI = 3.1416;
28
4.2 方法
•double 方法的重载 x=12.3,y=56.7;
Program.Swap(ref x,ref y);
int x=12,y=5; Program.Swap(ref x,ref y);
29
4.2 方法
• 方法的重载
– 可以使用同一方法名来表示多个操作
– C#中允许一个类中包含多个同名的方法,
4
成员概述
• 成员访问限制
– private 私有 – public 公有
class Student { public string name; public void Write() { Console.WriteLine(name); } }
Student s1 = new Student(); Console.WriteLine(s1.name); s1.Write();
静态方法的代码中只能使用类的静态成员
11
using System; namespace P4_1 { class Program { static void Main() { Student.WriteSchoolInfo(); Student s1 = new Student(); s1.name = "王小红"; Student s2 = new Student(); s2.name = "周军"; s2.Department = "数学系"; Student.School = "华中科技大学"; Student.WriteSchoolInfo(); s1.WritePersonalInfo(); s2.WritePersonalInfo();} } public class Student { public static string School = "华中理工大学"; public string name, Department = "计算机系"; public int age; public void WritePersonalInfo() { Console.WriteLine("{0} {1} {2} ", School, Department, name); } public static void WriteSchoolInfo() { Console.WriteLine(School); } }
3
成员概述
• 成员访问限制
– private 私有
class Student { private string name; private void Write() { Console.WriteLine(name); } }
Student s1 = new Student(); Console.WriteLine(s1.name); s1.Write();
22
4.2 方法
• 参数类型
– 值传递 – 引用传递 – 输出型参数
不要求初始化
public int SumProd(int x, int y, out int a) { a = x * y; return x + y; } int z=SumProd(10, 20, out a); Console.WriteLine(“{0},{1}”,z,a);
相关文档
最新文档