在D6
好象抽象类是能创建实例,但不能使用,
象 TStream这样的也可以创建实例,但在使用实例对象的时候
会出现abstract error.

解决方案 »

  1.   

    可以调用不是抽象方法的方法我想应该是borland继续完善oop思想的一方面,抽象类调用的非抽象方法应该是其子类的方法吧,在创建实例以后子类的属性方法是可以作为基类的属性和方法调用的,但基类的属性方法子类就不可以用了。
      这只是我的一点想法,不知实际是不是这样,没试过,见笑了!
      

  2.   

    foxnt:
    这是因为你的代码根本没有生成机器代码,被优化掉了!因为你没有使用过a,没有使用的变量会被删除!
      

  3.   

    Kingron(沉沦中……) :
      我用过a啊。后来我给a添加了个非抽象方法,能够被调用的。所以我在上面说
      “且还可以调用不是抽象方法的方法”不过我看编译器编译的时候,确实把a给优化了。只是不明白为什么还可以建立实例出来。:(
     但是我记得在D5里面是不能建立的呀。比如:
       TStrings.Create
     是会报抽象错误的。但是D6就没了。不知道是不是BORLAND给忘了哦。呵呵
      

  4.   

    虽然我不知道是不是被优化掉的原因或是borland的某种故意所造成的
    但这的确可以
    比如抽象类TStrings也可以被创建,但不能使用
    这应该不和oop思想产生根本上的抵触吧:)