要不要抽象类(200分)

  • 主题发起人 主题发起人 dedman
  • 开始时间 开始时间
D

dedman

Unregistered / Unconfirmed
GUEST, unregistred user!
大家都知道,抽象类定义的是公共的接口,它不包含具体的实现。
这些公共的接口体现的是各具体类中共同的行为,而这些行为又经常可共享实现,
很显然就可在抽象类之下,具体类之上增加一个基类,这时该基类既包含公共的调用接口
又包含实现,那么此时还要不要抽象类。
我知道这种想法怪怪的,所以想听下大家的意见。
 
再增加一个类层次,把共享的实现加进去。
实际上,抽象类与具体类间可以增加很多
类去共享代码,象我们熟悉的VCL,TObject
到TDBEdit,中间有很多类,就有这方面的目的。
 
我想法哪里怪﹖你好好去看看Delphi的源碼﹐就看TStrings這個抽像類和TStringList這個子
類。相信你了解了之后﹐你就會明白了。等你明白了﹐你也會明白為什么還會有一個TCustomEdit和TEdit了。
 
只要有利于代码重用的都应该去做。
 
主要DELPHI没有抽象类的定义, 不像JAVA,定义为Abstract之后就不能创建其本身的实例了。
感觉语言本身没有提供足够的保护。
 
也无所谓的,定义的abstract如果不实现,会有编译提示,同时运行时如果调用会出错的。
还要什么呢?
 
看来答案是肯定的。
不过抽象类应做成什么样呢,方法行为,当然是公共抽象,但对于成员域呢?
好像DELPHI的TCONTROL等都做成子类成员域的集合, 而不是子类成员域的公共抽取。
这又是一种怎样的思维,想再听下各位高见。
 
抽象类最好不要有太多的限制,主要是公共的、抽象的方法;而由子类实现具体的形式;
 
多人接受答案了。
 
后退
顶部