假设obe1:Tobject,
    obe=Class(Tobject),
   Tobject中有一保护方法method1,
问题1:obe1.method1不行,但obe(obe1).method1就行
问题2:obe(obe1)这样的表达式到底是一个变量还是一个类
问题3:为什么用类Tobject去访问类中声明的方法method1不行,即不可以这样Tobject.method1

解决方案 »

  1.   

    看来老兄要恶补一下面向对象了
    obe1是个变量,obe是个类,而且是tobject的子类
    obe1只能访问tobject中的public方法与属性
    obe除了tobject中的private方法与属性其他均可obe(obe1)这是强制类型转换,相当于
    obe2: tobe
    obe2 := tobe(obe1);
    obe2.method1;tobject.method1这样的写法是不可以的(除非method1是类方法),因为没有可操作的对象
      

  2.   

    method1是Tobject方法还是obe的方法?
    如果是obe的,没什么问题啊?
    obe(obe1)是一个类,把obe1转化为obe类,可以访问ibe类的所有非私有对象!
      

  3.   

    1. obe1是tobject而不是obe的实例。如果定义成 obe1:obe,则可以 obe1.method1;
    2. obe(obe1);是一个类型强制转化,将obe1转换成obe类型;
    3,method1是 obe的保护成员,而不是tobject的保护成员,所以tobject1.method1是不行的。
      

  4.   

    看来楼上几位都需要恶补一下面向对象的思想了,不,准确的讲,是面向对象的思想怎样在 object pascle 编译器里实现的;  to: liumengchuan() 基本正确 “ obe1只能访问tobject中的public方法与属性” 有误!!!  to: yosoft() 
       “obe(obe1)是一个类,把obe1转化为obe类,可以访问ibe类的所有非私有对象!”
       所有用在这里是错误的!!  to:
       “obe1是tobject而不是obe的实例。如果定义成 obe1:obe,则可以 obe1.method1”  错误!
        “method1是 obe的保护成员,而不是tobject的保护成员,所以tobject1.method1是不行”
          这样解释是错误的!
       
      烦楼主以后把问题说清楚,象你这样别人很难回答的,甚至会误导别人的!!  
      如果真照你说的这样,问题是不存在的。说清楚一点,
      

  5.   

    看OP的书就最好了相同Unit是可以访问的
    继承类也可以