面向对象之里氏转换的简单理解
2015-05-03 00:01
253 查看
在学习面向对象的时候,对里氏转换并不是十分了解。但是它再做日常开发时,我们经常会用到它。因此,还是对他进行一个简单的小结。
1.什么是里氏转换?
在面向对象程序设计当中,子类可以赋值给父类。并且如果父类中装的是子类的对象,那么,可以将这个父类对象强转为子类对象,我们将这个转换称为“里氏转换”。
对于纯文字而言,可能还是有些不大好理解,以下通过代码来说明上述的问题。
在Person类中
在Student类中
在main方法中
但是,这是针对一个对象而言,比较容易判断,但是,如果有多个类,我们不能简单的判断,因此,加一个小的知识点:
1.is 关键字表示类型的转换,返回值为bool类型,用法如下
2.as关键字也表示类型转换,如果不能发生转换,则返回值为null,用法如下
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作为关键字转换。
相关文章推荐
- java面向对象简单理解
- 面向对象的简单理解四
- 简单理解面向对象思维
- 简单理解js面向对象工厂方式
- 对面向对象简单的理解
- 面向对象思想--最简单、最容易理解面向对象思想的文章
- 面向对象--里氏转换练习
- 面向对象中封装特性的简单理解
- Java面向对象【经典案例】参数:尽可能简单的转换
- 面向对象 类的理解
- 面向对象设计原则理解
- 深入理解C++面向对象机制(三)构造与析构
- PHP面向对象深入理解之五(内省函数与反射类)
- Java面向对象设计多态特征理解
- 简单的面向对象思想,写一个传奇人物的属性
- Android之Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- 关于Lua的面向对象和闭包的理解
- Java面向对象简单总结(二)
- 我理解的面向对象
- C++面向对象静态成员变量和静态函数的相关概念及理解