类、对象和引用的声明 声明一个类: class类名{变量声明,方法声明} class Student long la, ∥学字号 char gender;∥性别 int classID /班级号,注意不能用clas作属性名 void Change Class( int aClassID)/更改班级 声明一个对象引用:类名引用名 Student student; 创建一个对象:new类构造函数 student= new Student),∥如果缺少这一步编译器会报错 ·使用对象:引用名.变量名/方法名(参数) student. id=200328013203194;
类、对象和引用的声明 • 声明一个类: class 类名 {变量声明,方法声明 } class Student { long id; //学号 char gender; //性别 int classID; //班级号,注意不能用class作属性名 void ChangeClass(int aClassID) //更改班级 { … } } • 声明一个对象引用:类名 引用名 Student student; • 创建一个对象: new 类构造函数 student = new Student(); //如果缺少这一步编译器会报错 • 使用对象:引用名 . 变量名 /方法名 (参数 ) student.id = 200328013203194; A-PDF Split DEMO
存储器分配 · Student student;∥声明一个 Student对象引用 student00000000 student= new studenti0),∥创建一个对象 new Studento student student 00000000 student OxOlabcdef 0000000000000000 0000000000000000 0000 0000 00000000 00000000 Student student2= student 对象赋值 student ox0labcdef H student2 OxOlabcdef 200328013203194 0000 00000000
存储器分配 • Student student; //声明一个Student对象引用 student • student = new Student(); //创建一个对象 new Student() student = student student • Student student2 = student; //对象赋值 – student student2 00000000 0000000000000000 0000 00000000 00000000 0x01abcdef 0000000000000000 0000 00000000 0x01abcdef 200328013203194 0000 00000000 0x01abcdef A-PDF Split DEMO
引用与对象举例 两个引用指向不同的对象 两个引用指向同一个对象 Student xiao- new Studento Student xiaoMing-new Studento Student xiao Fang=new Studento Student xiaoFang= xiaoMing xiaoMing. gender="M xiaoMing. gender="M xiaoFang.gender="F xiaoFang gender="F 说明: 说明 结果 XiaoMing.gender为M',因为 结果 XiaoMing. gender为F”,因为引 引用 xiaoMing和 xiaoFang指向不 用 XiaoMing和 xiaoFang指向同一个 同的对象。 对象。 ( xiaoMing== xiaoFang)的结果为 ( Xiaoming== xiaoFang)的结果为 false。此时对象相等的判断应该 true。 xiaoMing equals( xiaoFang)结 用 equals方法。 果也为tue。 XIaoMing 0x0labcdef ????????2????? XIaoMing 0x0labcdef ?????2222 XlaoF ang 0x0 labcdf5 ??????? XIaoFang0x0labcdf5 ??????? ???????9292 F
引用与对象举例 Student xiaoMing = new Student(); Student xiaoFang = new Student(); xiaoMing.gender = ‘M’; xiaoFang.gender = ‘F’; 说明: 结果xiaoMing.gender 为‘M’,因为 引用xiaoMing 和xiaoFang指向不 同的对象。 ( xiaoMing= = xiaoFang)的结果为 false。此时对象相等的判断应该 用equals方法。 0x01abcdef ???????????????? ‘M’ ???????? xiaoMing xiaoFang 0x01abcdf5 ???????????????? ‘F’ ???????? 两个引用指向不同的对象 Student xiaoMing = new Student(); Student xiaoFang = xiaoMing; xiaoMing.gender = ‘M’; xiaoFang.gender = ‘F’; 说明: 结果xiaoMing.gender 为‘F’,因为引 用xiaoMing 和xiaoFang指向同一个 对象。 ( xiaoMing= = xiaoFang)的结果为 true。xiaoMing.equals(xiaoFang) 结 果也为true。 两个引用指向同一个对象 0x01abcdef ???????????????? ‘F’ ???????? xiaoMing xiaoFang 0x01abcdf5 A-PDF Split DEMO
值的内存分配 int xiaoMing=100 Int xiaoFang XiaoMing, xiao Fang=200 说明: 结果 XiaoMing为100,因为预定义数据类型不存在指向同 个对象的问题。 ( xiaoMing== Xiao Fang)的结果为 false Xiao Mir 100 xiaoFang 200
值的内存分配 int xiaoMing = 100; int xiaoFang = xiaoMing; xiaoFang = 200; 说明: 结果xiaoMing 为100,因为预定义数据类型不存在指向同 一个对象的问题。 ( xiaoMing= = xiaoFang)的结果为false。 xiaoMing 100 xiaoFang 200 A-PDF Split DEMO
参数传递 C#编程语言支持的参数传递方式包括: 值传递:方法中的变量是传入变量的一个拷贝,方 法中对形参做的修改,不会影响方法外面的实参。 对于值类型数据,值传递就是传递了变量的值。 对于引用类型数据,值传递传递的是引用的值,即方法中 的形参和方法外的实参将指向同一对象。因此,通过形参 也能修改对象的实际内容。 地址传递:方法中的变量是传入变量的一个引用, 方法中对形参做的修改,也会影响方法外面的实参。 ref关键字,可以将参数声明为传址调用。 out关键字,声明只用于返回值的参数,可以不用初始化就 作为参数传递给方法
参数传递 • C#编程语言支持的参数传递方式包括: – 值传递:方法中的变量是传入变量的一个拷贝,方 法中对形参做的修改,不会影响方法外面的实参。 • 对于值类型数据,值传递就是传递了变量的值。 • 对于引用类型数据,值传递传递的是引用的值,即方法中 的形参和方法外的实参将指向同一对象。因此,通过形参 也能修改对象的实际内容。 – 地址传递:方法中的变量是传入变量的一个引用, 方法中对形参做的修改,也会影响方法外面的实参。 • ref关键字,可以将参数声明为传址调用。 • out关键字,声明只用于返回值的参数,可以不用初始化就 作为参数传递给方法。 A-PDF Split DEMO