简述什么是继承,为何要继承,继承的规则?
类的继承是一种用现有的类来构造专用类的编程技术,它可以让开发人员重用代码。
继承规则:
1、 继承是可以传递的。B继承 了A,C继承了B。这是,C里面也继承了A的成员。
2、 派生类是基类的扩展,可以添加自己的成员。但不能除去继承的成员。
3、 构造函数和析构函数不能被继承。
4、 如果派生类定义有与基类成员名称相同的成员,就覆盖已继承的基类的成员。此时派生类的对象访问这个重名成员是派生类的,不是基类的。
5、 类中有虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员。
6、 在C#中只允许单一继承。但可以使用接口和扩展方法实现多重继承。
扩展方法:在.NET3.0中才出现。还没弄得太明白。
继承中的构造函数执行顺序?
public class Person
{
Person(){};
}
public class Zhu
{
Zhu(){};
}
public class Wang:Person
{
Wang(){};
Zhu zhu;
}
Wang wang=new Wang();
当派生类创建对象时,先调用基类的构造函数,再调用派生类;如果派生类中有对象成员,则先调用基类,然后调用成员对象类的,最后调用派生类的。
访问基类成员的方式?
public class Person
{
int Id;
public void GetName(){};
}
public class Wang:Person
{
Wang(){};
}
Wang wang=new Wang();
此时要调用基类的成员方法:
base .GetName(){};
(Person)wang. GetName(){};
抽象方法和虚方法的作用和区别?
抽象方法:当实例方法声明包含 abstract
修饰符时,称该方法为抽象方法。虽然抽象方法同时隐含为虚拟方法,但是它不能有 virtual
修饰符。抽象方法声明引入一个新的虚拟方法,但不提供该方法的实现。相反,非抽象类的派生类需要重写该方法以提供它们自己的实现。由于抽象方法不提供任何实际实现,因此抽象方法的方法体只包含一个分号。抽象类的派生类必须实现所有抽象方法。当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。(来源于:http://msdn.microsoft.com)
虚方法:如果一个实例方法声明前加有virtual则该方法为虚方法。它的作用就是为了实现共同的方法,但具体实现的内容不同。多态性就是派生类override基类的虚方法实现的
抽象方法和虚方法的区别:
1、 虚方法在声明时必须有实现部分;抽象方法不能实现,必须通过派生类来实现。
2、 抽象方法只能什么在抽象类中;虚方法可以在抽象类也可以在一般的类中,该方法不必重写,也可以重写。
3、 抽象方法只能在抽象类中出现。