1、里氏转换
假定有三个类、一个为父类Person,两个子类Student、Teacher都继承了这个父类
1)、子类可以赋值给父类
Person person = new Student();
person.PersonSayHello();
2)、如果父类中装的是子类的对象,那么可以将这个父类强转为子类对象
Person person = new Student();
person.PersonSayHello();
Student student= (Student)person;
student.StudentSayHello();
2、子类对象可以调用父类中的成员,但是父类对象永远都只能调用自己的成员
3、is 和as 的区别
1)、is:表示类型转换,如果能成功,返回一个true,否则返回一个false
2)、as:表示类型转换,如果能成功,返回一个这个对象,否则返回null
4、FileStream类的使用
1)、读取数据
FileStream fileStream = new FileStream(@"C:\Users\Lai\Desktop\Text.txt", FileMode.OpenOrCreate, FileAccess.Read);
byte[] buffer = new byte[1024*1024*5];
//返回本次实际读取到有效字节数
int r = fileStream.Read(buffer, 0, buffer.Length);
//将字节数组中每一个元素按照指定的编码格式解码成字符串
string a = Encoding.Default.GetString(buffer,0,r);
//关闭流
fileStream.Close();
//释放流占用的资源
fileStream.Dispose();
5、将创建文件流对象的过程写在using中,会自动帮助我们释放所占用的资源
2)、写入数据
using (FileStream fsWrite = new FileStream(@"C:\Users\赖国强\Desktop\Text.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
string str = "hei";
byte[] buffer1 = Encoding.Default.GetBytes(str);
fsWrite.Write(buffer1,0,buffer1.Length);
}
6、虚方法
在父类的方法中加入virtual,表示该方法可以被子类重写,在子类的方法前面加入override。表示这个方法要被重写
class Person
{
public virtual void Hello()
{
Console.WriteLine("Say hello!");
}
}
class Student:Person
{
public override void Hello()
{
Console.WriteLine("Hello say!");
}
}