一、静态,虚拟,动态,覆盖
二、private,protected,public,published请用最简单最易理解的话教一下好吗?谢谢

解决方案 »

  1.   

    静态就是类方法,可以通过类调用,而不必建立对象
    虚拟就是应该和静态对应吧,必须用对象调用
    动态和虚拟一样,区别在于一个运行时解析,一个编译时解析。
    覆盖有两种,一种使overload,一种使override,你问得应该是后一种,其实应该叫重载就是子类方法替代父类方法
    private只有自己可以使用
    protected子类可以使用
    public都可以使用
    published不知道从java中得出的概念,delphi得太复杂了,请多多指正。
      

  2.   

    楼上的不对静态方法是在声明中参数表后不加 Virtual 或 Dynamic 字符的. 也就是方法的声明默认为静态方法虚拟方法可以在子类中进行覆盖, 用关键字 Virtual 表示. 在子类中进行覆盖时要加上关键字 Override动态和虚拟一样,区别在于一个运行时解析,一个编译时解析。覆盖 Override . 在父类中必须要声明了 Virtual 时才能进行此格式的声明, 否则, 编译出错Overload 则是重引入. 就是可以声明与父类方法相同的名字, 但要用不同的参数列表或类型.private 只有自己和友元类可以使用. (友元类: 在同一个PAS文件中声明的所有类全是友元类)
    protected 只有自己、友元类和子类可以使用
    public 都可以使用
    published 是拖放控到窗体上时,可以在设计时进行编辑的属性和事件从java中得出的概念,delphi得太复杂了,请多多指正。
      

  3.   

    呵呵
    我的不是从 JAVA 中得到.
    都是 Delphi 的。从java中得出的概念,delphi得太复杂了,请多多指正。这一行忘了删除!!!哈哈
      

  4.   

    HOHO,我就喜欢这种问题!
    一、静态,虚拟,动态,覆盖
    答:静态方法就是在联结编译的时候知道方法的入口地址。所以叫静态方法!
        虚拟方法使用关键字Virtual,虚拟的主要目的是为了派生类可以对虚拟方法进行覆盖(Oerride)从而实现多态(向上引用)
        动态方法使用Dynamic,和虚拟方法基本一致,唯一不同的是,被覆盖的虚拟方法的入口地址将放在VMT中,所以查询速度快,但不节省空间;相反,被覆盖的动态方法的入口地址不放在VMT中,而是放在DMT中,所以虽然节省空间,但查询速度想对被覆盖的虚拟方法慢一些!
        覆盖是一个很容易和重载混淆的概念,对于重载(Overload)是和类的多态没有任何关系的,只是一个简单的语言现象,存在的目的就是希望类的方法可以具有同名的功能。而覆盖才是实现多态的关键技术;二、private,protected,public,published
    答:这些都是类的方法的可见性描述符,Delphi的过程和函数分为两种:一种是不属于任何类的方法或函数,Delphi中称其为例程;第二中就是类的成员方法!对于成员方法,其他类和派生类可以对不同的方法进行访问,至于访问权限则是由这些可见性说明符来限制的!至于各种可见性的访问权限楼主可以看看帮助中的说明,很详细!
    这里要说明一点的是友类的概念:在同一个单元中申明的类之间互称为友类!友类间的方法成员的可见性是完全透明的....