using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _02_is和as
{
internal class Program
{
static void Main(string[] args)
{
Father s= new Son();
s.Work();
// 判断 s 是否是 Son 的实例
if (s is Son)
{
// 将是 Son 实例的 s 转换为 Son 类型
Son s1 = s as Son;
s1.Work();
}
// 如果 s 是 Son 的实例,则 s 赋值给 s2
// s2 就是彻彻底底的儿子
// 上面形式的简写
if (s is Son s2)
{
s2.Work ();
}
Console.ReadLine();
// is 关键字用来判断一个对象是否是某个类的实例,as 关键字用来将对象转换为指定的类型。
}
}
class Father
{
public int Id { get; set; }
public string Name { get; set; }
public void Work()
{
Console.WriteLine("父亲的工作");
}
}
class Son : Father
{
// 在父类中 work 方法并非 虚方法 或抽象方法 不能使用override 进行重写
//override public void Work()
// {
// Console.WriteLine("儿子的工作");
// }
public void Work()
{
Console.WriteLine("儿子的工作");
}
}
}
/*
封装类 Animal 包合三个属性name age id
封装类 Cat 包含一个方法 Eat 吃老鼠
封装类 Dog 包含一个方法 Work 看家护院
Cat 和 Dog 继承 Animal
创建一个动物数组 包含 多个猫和狗
循环数组中的所有动物如果是猫 调用 Eat 方法 否则调用 Work 方法
*/