关于类型向上转型,我一直搞不太清楚,请大虾说明一下。(100分)

  • 主题发起人 主题发起人 bywind
  • 开始时间 开始时间
B

bywind

Unregistered / Unconfirmed
GUEST, unregistred user!
就是为什么子类实例化的对象可以负值给父类,我一直搞不明白,明明子类中有父类没有的,如新增加的属性,方法等,可怎么就可以呢?李艺书中的解释就是说子类有父类所有的东西,这我知道,可是我关心的是子类中父类没有的呢???请大家说说,谢谢!
 
大师的话应该是末错的。。。
 
就是虚函数的作用.
 
呵呵,是刘艺吧,老刘看你把他改姓要气死了。
父类是子类的概括,子类是父类的扩展。
子类向上转型后,对外实现的是父类的接口,但子类自己的特征依然存在,还是可以继续向下转型的。
打个比方,一台消毒饮水机,你可以把它向上转型为饮水机使用,但是他的消毒功能依然存在,在必要时还是可以向下转型为消毒饮水机。
东西一样,接口不同而已。
 
类似这样的?tcontrol(edit1).enabled:=true;?
转了以后只能访问父类的属性、方法啊......
为什么能访问? 在实例中所有的方法属性都是先有父类的再有子类的,所以转为父类类型以后,父类所含有的属性方法,相对于首地址的内存偏移是不变的
 
向上转型后,就只能使用父类中有的方法了,需要使用自己特有方法的时候还可以转回来
 
只能访问父类本身的东西,因为父类有的子类都有,可以理解子类比父类大,如果充方法和属性上来说,可以理解成包括,那么子类当成父类来使用就没有问题,相当于“大材小用”,只用子类里面那些,在父类中也存在的方法属性,但是不访问它特有的那些东西
 
后退
顶部