似乎没有必要使用封装

There seems to be no point of using encapsulation

两个简单的 classes,一个检查长度和 returns true of false。第二次检查第一个 class 是否返回 true 或 false,并根据此检查 returns 消息。现在,我的问题是,将变量设置为 public、protected 还是 private 有什么区别(注意:我知道它们是什么)。

我为什么要这样做,如果我把我的变量设置为 public 谁能访问它?

我知道封装是什么以及它是如何封装所有 class 成员的,但似乎真的没有意义..如果是 IRL,我可以理解是的,有人可能会从我的房子,所以我应该把它们都锁起来..但是在编程中似乎没有任何意义..

http://www.codeproject.com/Questions/161855/Encapsulation-and-why-we-must-use-it 这家伙告诉 任何人 都可以访问 class 成员,但这些人是谁?我认为 PHP 在服务器中运行并且默认情况下访问它是受限制的。你身边没有人可以 access/edit 文件..

class Length_class{
        public $bus;
        public $returned;

        function __construct($bus){
            $this->bus = $bus;
            if($this->bus < 10){
                $this->returned = false;
            }else{
                $this->returned = true;
            }
        }

    }

    class Length_class_extended extends Length_class{

        function display_length(){
            if($this->returned){
                return "Length is $this->bus";
            }else{
                return "Length is $this->bus";
            }
        }

    }

    $Length_class_extended = new Length_class_extended(10);
    echo $Length_class_extended->display_length();

使用访问修饰符的主要原因是当您提供 class 供其他人使用时。通过封装,其他程序员可以在他的代码中使用您的 class 而无需知道您的 class 内部发生了什么。

他将有一个要使用的方法列表,并且只会通过此界面与 class 进行交互。这迫使他以既不会破坏他的程序也不会破坏您的 class 功能的方式使用方法 'correctly'。

如果您是唯一使用该代码的人并且它是一个相对简单的项目,并且完全有可能与每个成员一起编写功能代码 public - 但是,它可能与您无关好的做法,无论如何都值得做。它迫使您以真正封装的 'good' 风格编写,并且如果您想在各种情况下重用代码,可以通过阻止您滥用自己的 class 来避免您以后头疼。

也许在这一小段代码中没有意义。但是实际的应用程序比有更多 class 人(和人员)在它上面工作的应用程序要大得多。

封装提供的安全性与有人破解您的代码无关。它是关于您认识的某个人将要使用您的代码,而您想说明他可能会或可能不会访问的内容。

您使用封装来指定您的 class 是什么以及它应该做什么。它可以帮助您定义 classes 的职责。并帮助其他开发人员了解它,而无需知道您是如何实现的。

封装良好的代码提供了无痛(或至少减轻了痛苦)class 修改。