C#-子类和父类之间的转换

前言

C#是面向对象的设计语言,在使用时会使用到类。类又可以分为父类和子类,使代码实现了共享。在实际的使用过程中,会通过子类和父类之间的转换来达到,下面来介绍一下如何进行父类和子类之间的转换

子类和父类的关系

1.子类没有继承父类的私有字段,但可以继承属性和方法,继承具有单根型和传递性

2.子类会默认调用父类的无参数构造函数,如果父类中重写了一个有参数的构造函数,无参数的构造函数会被覆盖,子类调用报错(解决方法:使用base()关键字)

3.若子类和父类的方法名相同,子类会将父类的方法自动隐藏。

4.一个类没有继承其他类,默认继承object类

里氏转换

里氏转换原则:面向对象设计的基本原则,基类出现的地方,子类一定可以出现。只有子类替换掉父类,软件的功能不受影响时,父类可以真正的被复用。子类可以在父类的基础上增加新的行为。

第一种方法:

Student stu=New student;//创建一个子类对象
Person P=stu;//将子类对象赋给父类对象
P.Show();//调用父类的方法

第二种方法:

Person p =New Student();//父类对象接受子类的实例对象
Student stu=(student)p();//强制转换成子类

第三种方法:使用关键字(is/as)

is用法:(p is teacher)p是父类的实例化对象,Teacher是带转换的类型,表达式返回的是布尔值。

Person p=New Student();
If(p is Student)
{
  console.Writeline("转换成功")
}
else
{
  console.Writeline("转换失败")
}
as用法:(p as teacher)as先做判断,再转换。返回值为NUll值。
Person p=New Student();
Student t=p as Student;

所有的子类也都是父类的类别,可以申明一个父类的变量,来接受其所有的子类:父类若存的是子类的对象,可以将父类转成相应的子类对象。

作用:把不同子类的对象统一转换为父类(基类)的类型,使数据类型达到统一。在父类对象所在的位置都可以传进来子类的对象,尽可能重用代码。

你可能感兴趣的:(【C#】)