1、子类转换为父类是隐式转换,父类转换成子类是显示转换
class People
{
public void ShowMethod()
{
}
}
class Chinese: People
{
public void Workhard()
{
}
}
1)子类转换成父类
Chinese chinese = new Chinese();
People people = chinese;
2)父类转换成子类
Chinese chinese = new Chinese();
People people = chinese;
Chinese chineseNew = (Chinese)people;
这里要注意:父类并不能直接转换为子类,必须是子类先转换成了父类,然后这个父类对象再去转换成子类才可以。
2、父类中的构造器、析构器、访问符为private的私有成员,以上几个子类均不能访问;
3、protected修饰符
protected修饰的成员只允许本身以及子类访问
4、扩展方法
父类的扩展方法,子类也能访问,但是要注意一下几点:
1)扩展方法是静态方法并且在静态类中;
2)子类可以访问父类的扩展方法,但是从技术上说不是继承起的作用;
3)很少给基类写扩展方法,一般都是直接改基类代码,或者即使基类代码不改的话,也要在基类或子类实现地接口上添加扩展方法;
5、单继承特性以及通过聚合实现多继承
class People//父类
{
protected void ShowMethod()
{
}
}
class Chinese : People//子类
{
public Chinese()//构造函数实例化聚合类
{
animal = new Animal();
}
private Animal animal ;//声明一个私有的聚合对象,维持对聚合类的引用
public void Eat()//将聚合类中方法重写定义并声明为Public,方便其他类调用
{
animal.Eat();
}
public void Workhard()
{
}
}
class Animal//聚合类
{
public void Eat()
{
Console.WriteLine("吃东西");
}
}
6、密封类
如果不希望一个类能够被其他类派生,则使用sealed关键字将类声明为不可派生。