doure5236 2016-09-28 15:44 采纳率: 0%
浏览 80
已采纳

接口不能声明私有/受保护的功能

I read many articles, "Interface is a contract of the class". A class having private,protected and public visibility then why interface declare only public methods.

  • 写回答

2条回答 默认 最新

  • duanfu3390 2016-09-28 18:06
    关注

    Interface describes how to interact with object (public methods).
    Interface must know nothing about internal object structure (private or protected methods)
    and interface don't care what going on under the hood of object.

    Also private and protected methods may be vary depending on low layer implementation.

    For example we have interface SocialMedia

    interface SocialMedia
    {
        public function share();
    }
    

    And inside this interface we don't care (and don't have to care) about how exactly object will share information, we only know that information will be shared.

    And also we have 2 classes:

    class Twitter implements SocialMedia
    {
        private function tweet()
        {
        }
    
        public function share()
        {
            return $this->tweet();
        }
    }
    
    class Facebook implements SocialMedia
    {
        private function post()
        {
        }
    
        public function share()
        {
            return $this->post();
        }
    }
    

    As you can see this classes implements SocialMedia and we know how to interact with them - exactly this is intention of interface.
    Also we have private methods tweet for class Twitter and post for Facebook this methods are low layer implementation inside particular class, so we can not describe such methods inside interface.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog