您的位置:首页 > 其它

面向对象之里氏转换的简单理解

2015-05-03 00:01 253 查看
在学习面向对象的时候,对里氏转换并不是十分了解。但是它再做日常开发时,我们经常会用到它。因此,还是对他进行一个简单的小结。

1.什么是里氏转换?

在面向对象程序设计当中,子类可以赋值给父类。并且如果父类中装的是子类的对象,那么,可以将这个父类对象强转为子类对象,我们将这个转换称为“里氏转换”。

对于纯文字而言,可能还是有些不大好理解,以下通过代码来说明上述的问题。

在Person类中

public Class Person
{
public void PersonHello()
{
Console.WriteLine("我是人类");
}
}


在Student类中

public class Student : Person
{
public void StudentHello()
{
Console.WriteLine("我是学生类");
}
}


在main方法中

Person P=new Student();//将学生类(子类)的值赋值给Person(父类)类;使得Person类中包含了Student类的对象;
((Student)p).StudentHello();//由于父类中包含了子类的对象,我们将父类对象强转为子类对象;


但是,这是针对一个对象而言,比较容易判断,但是,如果有多个类,我们不能简单的判断,因此,加一个小的知识点:

1.is 关键字表示类型的转换,返回值为bool类型,用法如下

if(p is Student)
{
//判断赋值
}


2.as关键字也表示类型转换,如果不能发生转换,则返回值为null,用法如下

Student S=p as Studnet;//as作为关键字转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: