1.说明继承、重载、覆盖、隐藏和多态的区别。
2.说明C#中多态的条件。
3.说明派生类对象的链式构造和析构过程。
4.什么是密封类和密封方法。
5.Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?

解决方案 »

  1.   

    谢谢zhantianyou() 的回答,大家继续,能够把这些问题搞搞清楚
    平时代码写了不少,但是一些概念性的问题,不是很清楚,理解不够
      

  2.   

    中文sdk上应该都有的。要理解概念,最好作个例子测试
      

  3.   

    好,回去先查查中文sdk再说,不懂再问各位
      

  4.   

    1.说明继承、重载、覆盖、隐藏和多态的区别。
    2.说明C#中多态的条件。
    3.说明派生类对象的链式构造和析构过程。
    4.什么是密封类和密封方法。
    5.Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?
    MSDN一一有描述和實例,
      

  5.   

    说明继承、重载、覆盖、隐藏和多态的区别。
    答:
       继承:派生类可以继承除了基类的构造函数和析构函数以外的所有的成员。
       重载:函数的参数个数或参数类型不同的而函数名相同的函数称重载。根据参数的不同自动匹配调用。
       覆盖/隐藏:
    (1)成员变量的覆盖:如果派生类声明了一个和基类同名的成员变量,就是覆盖了基类成员。
            (2)成员函数(方法)的覆盖:实际上可以分为两种:普通方法(非虚函数)的覆盖称为隐藏,声明时在派生类中函数头前用关键词new,不能与override同时用;另外一种,就是虚方法的覆盖,真正意义上的函数覆盖。基类中的函数用关键词virtual,派生类中用override。
       多态:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。基类对象指向派生类对象,基类对象调用虚函数时体现多态,会在运行时决定调用哪个类的函数,即运行时多态。
    实际上,只有虚函数才有多态,成员变量不具多态的能力,非虚函数的覆盖函数(即所说的隐藏)在编译时就确定其调用者,即编译时多态,但没有多态的体现。  说明C#中多态的条件。
    答:
    基类引用指向派生类对象,调用virtual函数,根据运行时确定指向的对象决定调用基类的还是派生类里的函数,实现多态。
    只有虚函数的覆盖才有多态的能力,成员变量不具有多态的能力。  说明派生类对象的链式构造和析构过程。
    答:
    实例化一个派生类的对象时,派生类构造函数在执行它自己的函数体之前,会显示或隐式地调用基类构造函数。
    当析够一个派生类对象时,顺序与构造函数执行的顺序相反。先析构自己再析构基类;
    N个对象的析构与构造的顺序相反。  什么是密封类和密封方法。
    答:
    密封类:不允许别的类继承的类。类声明的前面加关键字sealed。
    密码方法:对方法可以使用sealed修饰符,这是称该方法是一个密封方法。密封方法是以防止在方法所在类的派生类中对改方法的重载。密封方法必须对基类的虚方法进行重载,提供具体的实现方法。  Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?
    答:
     C#中:
         Base一般用在派生类中(或派生类对象)调用基类的函数或成员时为了区分基类和派生类同名的成员(如成员函数的覆盖或是继承来的成员变量的隐藏);一般格式为: Base.fuction() 或者Base.x (其中function()是基类的成员函数,x是基类的成员变量)。
    Eg:
    Master从Student派生来,fn()是Student中的函数
    Master a;
    a.base.fn();
    C++中:
    对应在c++中格式为:father::function()或者father::x.(father是基类)
    Eg: a.Student::fn();  abstract类与具体类的区别,abstract类的作用是什么?
    答:
      与具体类区别在于:
     抽象类只能作为其它类的基类,它不能被直接实例化,而且对抽象类不能使用new操作符。
     抽象类不能同时又是密封的。
           作用:为它的派生类提供一个公共的界面。  interface与abstract类的区别,interface的作用是什么?
    答:
        区别在于:
     接口继承允许多继承,一个接口可以有多个父接口;而抽象类和普通类只能有一个父类。
     接口里面的只是对函数的说明不包含任何实现(即使是空的{}都不行;而抽象类可以包含部分方法的实现。
     接口一旦创建了就不能更改。
     接口成员声明不能包含很和修饰符。默认的为public.
     实现接口必须实现接口中的所有方法,而继承抽象类的子类可以还是抽象类,可以只实现部分方法。
    作用:在组件和组件之间、组件和客户之间都通过接口进行交互。