我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,
单独的封装到一个类中,作为这些类的父类。
Student、Teacher、Driver 子类 派生类
Person 父类 基类
子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
问题:子类有没有继承父类的构造函数?
答:子类并没有继承父类的构造函数,但是子类会默认的调用父类的无参数的构造函数。
创建父类对象,让子类中可以使用父类中的成员。
继承的单根性:一个子类只能有一个父类。
继承的传递性:
Object是所有类的基类。
New关键字
1, 创建对象
2, 隐藏从父类哪里继承过来的同名成员
3, 隐藏的后果就是子类调用不到父类的成员。
里氏转换
1, 子类可以赋值给父类
2, 如果父类中装的是子类对象,那么可以将这个父类强转为子类对象
1、里氏转换
1)、子类可以赋值给父类:如果有一个地方需要一个父类作为参数,我们可以给一个子类代替
Student s = newStudent();
Person p =new Student();//s;
2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。
//is的用法
//if (p is Student)
//{
// Student ss =(Student)p;
// ss.StudentSayHello();
//}
//else
//{
// Console.WriteLine("转换失败");
//}
//as的用法
Student t =p as Student;
t.StudentSayHello();
Console.ReadKey();
is:表示类型转换,如果能够转换成功,则返回一个true,否则返回一个false
as:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null
protected
受保护的:可以再当前类的内部以及类的子类中访问。