1、is as
is:判断对象和类型的兼容 兼容---true 不兼容---false 子类兼容父类
子类对象 is 父类类型 --true
对象 is 类型 (对象为此类型的对象 对象为此类型的子类的对象 --true)
public class Person{}
public class Student:Person{}
Person per=new Person();
Student stu=new Student();
Person person=new Student();
返回true:
per is Person
stu is Person
stu is Student
person is Person
person is Student
as:强制类型转换
转换成功,返回对象 转换失败,返回null 引用类型之间的转换
(目标类型)对象 :成功,返回对象 失败,引发异常(InvaildCastException)
2、常用接口
IComparable: int CompareTo(object obj)
练习
1 定义学生类Student,实现IComparable接口
按学生成绩进行降序排序
实现步骤
1、定义Student类,添加必要的字段和方法(至少包含姓名和成绩)
2、实现接口
public class Student:IComparable
{
public string name;
public int score;
public int CompareTo(Student stu){}
public int CompareTo(object obj){}
}
3、在Main方法中创建学生对象数组,并初始化
Student[] stuList=new Student[5];
//循环赋值
4、编写冒泡排序功能,实现学生的降序排序(可以用自定义方法实现)
public static void Sort(Student[] stuList){}
5、遍历输出排序后的结果
3、命名空间
namespace 命名空间名
{
}
命名空间名采用帕斯卡命名法
可以用公司名或产品名等做前缀
命名空间可以包括:类 接口 枚举 结构 委托 命名空间
避免命名冲突
同一个命名空间下,采用不完全限定名(类名)
不同命名空间下,在没有引用命名空间或者使用两个或以上命名空间中的同名类时,使用完全限定名(命名空间.类名)
using 命名空间名;
using 别名=命名空间;//简化代码 必须使用完全限定名时,用别名相对简单
别名.类名
3、属性
对私有字段的封装
访问修饰符 [可选修饰符] 数据类型 属性名
{
get//读 访问器
{
//任意代码
return this.字段;//return 值;
}
set // 写 访问器
{
//代码
this.字段 = value; //this.字段 = 值;
}
}
可以限定对字段的访问方式(读写、读、写)
可以在get或set中添加代码 逻辑判断
读写属性:get set
只读属性:get
只写属性:set
属性的访问修饰符
get 或set访问器的访问权限必须必属性具有更强的限定
只有读写属性才能在访问器前添加访问修饰符,而且只能是一个
用属性对字段进行封装后,除get、set访问器外,其他地方最好使用属性而不是字段
快速封装字段:
光标放到需要封装的字段所在行,右键-->重构-->封装字段
或者 ctrl+r,e
自动属性:读写属性
prop+Tab+Tab
4、索引器
作业1:
设计一个媒体播放器,要求:
1、根据用户录入的媒体格式进行播放,能够播放MP3、WAV、RM、AVI等格式
2、未来可能还会要求增加其他媒体格式。
作业2:
建立学生类,要求:
1、属性:姓名、学号、年龄
2、行为:上课、考试、面试
3、创建合适的构造方法
4、为所有属性设置读写属性
姓名不能超过4个字符
年龄必须大于18,小于50岁
学号必须大于0
5、为学生类增加一个学习课目的数组,并创建对应的读写索引器
public class Student
{
private string name;
private int stuNo;
private int age;
public string Name
{
get
{
return this.name;
}
set
{
if(value.Length>4)
{ //}
else
this.name=value;
}
}
private int[] scoreList=new int[3];
public int this[int index]
{
get
{
return this.scoreList[index];
}
set
{
this.scoreList[index]=value;
}
}
}
总结:
1、is as
is:判断 对象 is 类型
as:强制转换 对象 as 类型 失败:null
2、常用接口
IComparable int CompareTo(object obj)
3、命名空间
4、属性
对字段的封装
public 数据类型 属性名
{
get
{
return this.字段;
}
set
{
this.字段 = value;
}
}
5、索引器
对集合类数据的封装
public 数据类型 this[数据类型 参数]
{
get{}
set{}
}
类似数组的方法使用对象