继承:
当需要在一些类中重复写相同的成员时,可以将这些重复的成员单独封装到一个类中,作为这些类的父类。
父类 基类
子类 派生类
1.子类继承了父类的属性和方法,但子类没有继承父类的私有字段;
2.子类没有继承父类的构造函数,但是子类会默认调用父类无参数的构造函数,创建父类对象,让子类可以使用父类的成员;所以如果在父类中重新写了一个有参的构造函数,则无参的被替代,子类调用不到无参的构造函数,会报错;
解决方法:
1.在父类中重写一个无参的构造函数;
2.在子类中显示的调用父类有残构造函数,使用关键字:base().
继承的特性:
1.单根性:一个子类只能有一个父类;
2.传递性:
new:
base:
里氏转换:
1.子类可以赋值给父类;
2.如果父类中装的是子类对象,可以将这个父类强制转为子类对象;
Person(父)Student(子)
Person p=new Student();//1
Student s=(Student)p;//2
3.里氏转换是否成功:
is:如果转换成功,返回true,反之false
if(p is Student){}
as:如果转换成功,返回相应对象,否则返回null
Student t=P as Student;
访问修饰符Protected:
受保护的,可以在当前类的内部及该类的子类中访问。