C#里氏转换以及练习
来源:互联网 发布:山姆.维特维奇 知乎 编辑:程序博客网 时间:2024/06/05 11:22
里氏转换:可以将子类赋值给父类,如果父类装有子类对象,可以将父类强制转换为子类
//子类可以给父类赋值
student s = new student();
person a = new student();
//如果父类中装的是子类的对象,那么可以将父类强制转换成子类
student ss = (student)a;
//is 表示类型转换,如果成功则返回一个true,
if (a is student)
{
student sss = (student)a;
}
else { Console.WriteLine("转换失败"); }
//as 表示类型转化,成功则返回相印对象,失败则返回null;
student t = a as student;
t.say();
Console.ReadKey();
public class person
{
public void sayhello()
{
Console.WriteLine("我是父类");
}
}
public class student : person
{
public void say()
{
Console.WriteLine("我是学生");
}
}
public class drive:personS
{
public void test()
{
Console.WriteLine("我是司机");
}
}
class Program
{
static void Main(string[] args)
{
//用循环调用十个对象的打招呼的方法;
//student s = new student();
//person p = new person();
//shuaiguo sg = new shuaiguo();
person[] pers = new person[10];
Random r = new Random();
for (int i = 0; i < 10; i++)
{
int number=r.Next(1,7);//六种类型的对象
switch (number)//将子类对象装到父类中
{
case 1: pers[i]=new student();
break;
case 2: pers[i] = new person();
break;
case 3: pers[i] = new teacher(); break;
case 4: pers[i] = new yeshou(); break;
case 5: pers[i] = new meilv(); break;
case 6: pers[i] = new shuaiguo(); break;
}
}
for (int i = 0; i < pers.Length; i++)//调用数组中每个子类元素的打招呼的方法
{
if (pers[i] is student)
{
((student) pers[i]).studentsayhi();
}
else if (pers[i] is teacher)
{
((teacher)pers[i]).teachsayhi();
}
else if (pers[i] is shuaiguo)
{
((shuaiguo)pers[i]).shuaiguosayhi();
}
else if (pers[i] is meilv)
{
((meilv)pers[i]).meilvsayhi();
}
else if (pers[i] is person)
{
((person)pers[i]).personsayhi();
}
}
Console.ReadKey();
}
}
public class person//父类
{
public void personsayhi()
{
Console.WriteLine("我是人类");
}
}
public class student : person
{
public void studentsayhi()
{
Console.WriteLine("我是学生");
}
}
public class teacher : person
{
public void teachsayhi()
{
Console.WriteLine("我是老师");
}
}
public class meilv : person
{
public void meilvsayhi()
{
Console.WriteLine("我是镁铝");
}
}
public class shuaiguo : person
{
public void shuaiguosayhi()
{
Console.WriteLine("我是帅哥");
}
}
public class yeshou : person
{
public void yashousayhi()
{
Console.WriteLine("我是野兽");
}
}
- C#里氏转换以及练习
- C#里氏转换
- C#里氏转换
- C#里氏转换/is/as
- C#基础-037 里氏转换
- 编程基础_里氏转换的练习
- Unity3D学习资源—C#里氏转换
- C#初识5 里氏转换(is,as)
- 里氏转换
- 里氏转换
- C# 里氏转换(父类转换成子类)( is as )
- C#学习第九天 继承、里氏转换、集合
- 【C#基础知识点】——里氏转换-as/is
- C#基础(15)——里氏转换、protected
- 黑马程序员--里氏转换
- 里氏转换原则
- 黑马程序员_里氏转换
- 黑马程序员_里氏转换
- Kubernetes和Spring Cloud哪个部署微服务更好?
- Android 软键盘弹出时把布局顶上去,控件乱套解决方法
- JS实现自动倒计时30秒后按钮才可用
- Python3之Django Web框架的双下划线跨表查询,聚合查询,分组查询
- c#简单类型
- C#里氏转换以及练习
- MyBatis的逆向工程
- ES6-字符串扩展-标签模板
- 在Windows下为PHP5.6安装redis扩展
- microsoft edge地址栏无法复制死机解决方法
- 文件上传
- BeautifulSoup库的使用
- dao层不写实现类容易出现的错误及解决方法
- JavaWeb从入门到放弃(1)-配置环境