using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 子类与父类的相互转换
{
class Program
{
static void Main(string[] args)
{
//try catch finally 与 continue
//如果在try中遇到continue,则忽略try中continue之后的语句
//但是依然执行finally中语句
//finally之外的语句也不执行
bool _flag = true;
while(true)
{
try
{
//if(_flag)
// continue;
//如果_falg为true,这下面的两句不执行
//Person per = new Student();
//per.Say();//此时输出father
//类的转换:as is
//1. is:返回bool类型,指示是否可以做这个转换
//2. as:如果转换成功,则返回对象,否则返回null
//作用:我们可以将所有的子类当做是父类来看,针对父类进行编程
// 可以写出通用代码,从而适应需求的不断改变
Person per = new Student();
Student stu1 = per as Student;
if(stu1 != null)
{
stu1.Say();
}
Teacher tea1 = per as Teacher;
if(tea1 == null)
{
Console.WriteLine("转换失败");
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
//如果try中执行了continue,则这两句依然要执行
Console.WriteLine("finally");
Console.ReadKey();
}
//如果在try中执行continue,则下面的两条语句并不执行
Console.WriteLine();
Console.ReadKey();
}
}
}
class Person
{
public void Say()
{
Console.WriteLine("father");
}
}
class Teacher:Person
{
public new void Say()
{
Console.WriteLine("Teacher");
}
}
class Student:Person
{
public new void Say()
{
Console.WriteLine("Student");
}
}
}