zoukankan      html  css  js  c++  java
  • Protected Functions 是理解OO的难点和关键

    Protected Functions 是理解OO的难点和关键


    private和public函数都好理解,这里就不多说了,夹在中间的prortected却有许多精妙之处,说说我的几个疑问和看法:
    1. 通常用于子类扩展父类的功能的时候用,即类库程序员可以,但客户程序员不得使用。所以程序员一旦偷懒,不写子类而想直接使用保护函数,那是不行的。比如要给QLabel加上Click功能,明明有现成的mouseReleaseEvent的函数就可以实现点击效果,但客户程序员就是无法使用,不得不写一个QLabel的子类来实现,代码其实很简单:
    http://qt-project.org/wiki/Make-a-QLabel-Clickable

    2. 父类的protected函数,在子类中重新声明为public,或者private分别会有什么效果?孙类还能继承吗?
    如果这个protected函数的可见性被改变后,它的overload函数会有什么下场?

    3. 写一个继承类,另写一个public函数,用它包装一下这个保护函数,然后客户程序员也就可达到相同的效果。这样可以不改变它的孙类对祖父类的继承和理解。

    结论:
    1. Protected函数不适用于懒人,但可适用于勤快的程序员
    2. Protected函数改变了它的Overload函数(指C++),并且影响孙类
    3. Protected函数可经过子类再次包装后使用,对整个类体系毫不影响

    如果想仔细揣摩保护函数的意义,可以看看QWidget定义的37个保护函数,另有9个保护函数继承于QObject,1个保护函数继承于QPaintDevice,鉴于QWidget对各种不同平台的强大适应性,应该可以足够理解保护函数的作用了:

    http://doc.qt.io/qt-5/qwidget.html

  • 相关阅读:
    撩课-Java每天5道面试题第8天
    撩课-Java每天10道面试题第7天
    撩课-Java每天10道面试题第6天
    撩课-Java每天10道面试题第5天
    JavaScript高级程序设计51.pdf
    JavaScript高级程序设计50.pdf
    JavaScript高级程序设计49.pdf
    JavaScript高级程序设计48.pdf
    JavaScript高级程序设计47.pdf
    JavaScript高级程序设计46.pdf
  • 原文地址:https://www.cnblogs.com/findumars/p/4324358.html
Copyright © 2011-2022 走看看