/*里式转换
* 1.子类可以赋值给父类
* 2.如果父类中装的是子类对象,那么可以将这个父类强转为子类对象
*
* 3.is:表示类型转换,如果转换成功,返回一个true
* as:转换失败,则返回Null
*
*
*/
class Program
{
static void Main(string[] args)
{
//Student s = new Student();
//1.子类可以赋值给父类:如果有一个地方需要父类作为参数,我们可以给一个子类代替
//Person p = s;
Person p = new Student();
//2.如果父类中装的是子类对象,那么可以将这个父类强制转为子类对象
Student s = (Student)p;
s.StudentSayHello();
//is
if(p is Teacher)
{
Teacher t = (Teacher)p;
t.TeacherSayHello();
}
else
{
Console.WriteLine("转换失败!");
}
//as
// Teacher t = p as Teacher;
Console.ReadKey();
}
}
public class Person
{
public void PersonSayHello()
{
Console.WriteLine("我是父类");
}
}
public class Student : Person
{
public void StudentSayHello()
{
Console.WriteLine("我是学生");
}
}
public class Teacher : Person
{
public void TeacherSayHello()
{
Console.WriteLine("我是老师");
}
}
网友评论