Form 继承相关的问题

PrintForm是票据设计用的BaseForm,继承与Form
画票据的人,再继承这个PrintForm,比如 PrintForm1。。。
有以下几个问题想请教:
1 我想在printForm里面加一些限制,并且子form不允许修改这些限制。
比如说不显示标题栏等,应该如何实现?
2 我要写两三个方法的定义,画票据的人要完成这些方法的实现,
可是只有抽象类,才能强制子类实现方法,或者用接口,但是
已经做了一个基Form了,基Form因为有些其他的要定义的,所以不能定义成抽象Form,
再做一个接口的话,
画票据的人,就必须既要继承基类,又要继承接口,有点麻烦,
有没有,只继承不是抽象的基类,又强制让子类实现该基类定义的方法?
不实现就编译报错。
3 假设,已获得一张票据的设计Form,但是不知道这个form的具体类名
我可以通过 
PrintForm form = printForm1; // 这里是PrintForm的子Form
来调用该子Form的方法,和实现对该form的控制。
但是因为这个票据Form是个模板,我想复制多个Form实例,以实现
分页的效果,这里在我不知道具体是什么Form的时候,
怎么能动态的生成这个子Form的对象。
1.如果继承了基类,又想子类减少方法,在编译器层面是不可能的。如果想限制,只能是在子类调用这个方法时抛出异常。
2.思路可能有问题。oo的思路是面向接口。基类只是用来帮助实现你定义的接口的。从设计的角度来看,没有基类,只有接口。
接口用于设计,基类只是用于实现。暴露基类的情况也有,不过是为了减少代码量。
3.同2,如果你的子类有与基类不同的特性,那就是另外一个接口。
建议仔细思考类工厂模式。工厂存在的目的,是让你从一个地方拿到这个接口的实例。

就是想实现票据打印的功能,用Form来画票据,画票据的人员,要实现
一个方法,把传入的数据,分别套入票据Form中的控件中,
作为一个票据的基本Form,想把所有票据共通的部分,都在这个Form里面定义好
所以,这个基本的票据基类 PrintForm,一定要要,但是,又想强制
画票据的人,不能忘记,去做上一部,把数据放入对应控件中。(所提问题2的产生)
所以产生了以上问题1
 我在基类PrintForm中,尝试写死pravite一些属性,比如Form的标题栏,背景色,大小
可是,继承这个基类的票据Form,感觉完全不受控制,还是显示标题栏,默认背景色,大小也可以调整
基类中的设置,完全不起作用。
问题3,实在打印时候,每页都打印成一样的内容了,可能是同一个对象,所以不知道怎么生成更多的新的
form对象,以避免每页都一样,(估计是指针的原因

想必lz是为了多人协作开发,为了保证约定能够被正确的实现而出现了这类问题。
一个接口是否被正确的实现,可以用单元测试来约束它。而不是通过语法。语法能起到的作用是有限的。而且,语法的约束不见得通用。假如移植到其他平台其他语言,没有这样的语法,又当如何?
写一个接口,然后写一个针对这个接口的单元测试。如果单元测试通过,这个实现就是正确的,否则它就是不正确的。
你可以设计2个类,一个类A是对外给其他人继承用的。另一个类B继承自Form,但设计成A的内部类。这样A就可以只暴露需要的接口,又可使用所有Form的成员。并且其他人无法访问到Form的任何东西

来源:nba直播

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值