请问,单元的Private、Public、Publiced都能定义变量、过程、函数吗?如果继承窗体,三者将有什么用处?如果调用窗体三者有什么区别?
TKS!

解决方案 »

  1.   

    private是指出的字段和方法是私有的。它表示最严格的封装。即类所在的单位以外的程序均不能访问私有成员,而包含此类的单元中,可以对定义为private的字段和方法进行访问。
    public是批出的字段和方法是公有的。既在某个类中声明的公有成员,能被其他类的实例和类所在的单元以外的程序访问。
    published指出的字段和方法是发行类型的,发行类型的成员在程序的设计期部和运行期间都是公有的。
       看一些面向对象的书,里面比较详细。
      

  2.   

    多谢!
    如果继承窗体,三者将有什么用处?如果调用窗体三者有什么区别?
    TKS!
      

  3.   

    Private, protected, and public members(私有、受保护和公有成员)
    Private 成员在声明它的单元或程序之外是不可用的,换句话说,一个private 方法不能从另一个模块(module)进行调用,也不能从另一个模块读取或写入一个私有的字段或属性。通过把相关类的声明放在一个模块中,可以使它们拥有访问其它类的私有成员的能力,同时又不会增大这些成员的访问范围。
    Protected 成员在声明它的类的模块中是随处可用的,并且在它的派生类中也是可用的,而不管派生类出现在哪个模块。换句话说,在派生类的所有方法定义中,你可以调用protected 方法,也能读取或写入protected 字段或属性。只有在派生类的实现中才应用的成员通常使用protected 属性。
    对于public 成员,只要能使用类的地方都是可用的。Published members(公布的成员)
    Published 成员和public 成员具有相同的可见性,不同之处是published 成员会产生RTTI 信息。RTTI使应用程序能动态查询一个对象的字段和属性,也能定位它的方法。RTTI 用于在存储文件和从文件导入时访问属性的值,也用于在Object Inspector 中显示属性,并且能为一些特定属性(叫做事件)关联特定的方法(叫做事件处理程序)。
    公布属性的数据类型受到限制,有序类型、字符串、类、接口和方法指针能被公布;当集合类型的基础类型是有序类型,并且上界和下界介于0 到31 之间时(换句话说,集合必须符合byte、word 或doubleword),集合类型也是可以公布的;除了Real48,任何实数类型都是可以公布的;数组类型的属性(区别于数组属性,array properties)不能是公布的。
    一些属性虽然是可以公布的,但不能完全支持流系统,它们包括:记录类型的属性、所有可公布类型的数组属性以及包含匿名值的枚举类型的属性。如果published 属性属于前面所述的类型,Object Inspector不能正确显示它们,并且使用流向磁盘操作时也不能保存它们的值。
    所有方法都是可以公布的,但一个类不能使用相同的名字公布两个或以上数目的被重载的方法。只有当字段属于类或接口类型时,它才是可以公布的。
    A class cannot have published members unless it is compiled in the {$M+} state or descends from a class compiled in the {$M+} state. Most classes with published members derive from TPersistent, which is compiled in the {$M+} state, so it is seldom necessary to use the $M directive.
    除非一个类是在{$M+}状态下被编译,或者派生于一个在{$M+}状态下被编译的类,否则它不能有公布的成员。大多数具有公布成员的类继承自TPersistent,而它是在{$M+}状态下被编译的,所以通常很少使用$M 编译器指示字。