继承,new关键字,里氏转换

 继承
  我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类中,  作为这些类的父类。
Student,Teacher,Driver  子类  派生类Person                                    父类  基类
  子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
问题:子类有没有继承父类的构造函数?
 答:子类并没有继承父类的构造函数,但是。子类会默认的调用父类无参数的构造函数,创建父类对象,让子类可以使用父类中的成员。
  所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类会报错。解决办法:
  1)、在父类中重新写一个无参数的构造函数。
  2)、在子类中显示的调用父类的构造函数,使用关键字:base()


new 关键字
1,创建对象
2,隐藏从父类哪里继承过来的同名成员


里氏转换
1,子类可以赋值给父类
2,如果父类中装的是子类对象,那么可以将这个父类强转为子类
is:表示类型转换,如果能成功转换则返回一个true,否则返回一个false
if(p is Teacher){
             ....
}
as:表示类型转换,如果能成功转换则返回对应对象,否则返回一个null
Teacher t=p as Teacher 

猜你喜欢

转载自www.cnblogs.com/Asylumrots/p/12583979.html